innodb 日志

  • 日志两种格式
    • 物理的日志
      • 记录完整的页
      • 记录页中被修改的 内容
    • 逻辑日志
      • 记录执行的 SQL 语句

物理日志相对比较大,比如索引分裂是会影响很多记录,导致日志量很大
逻辑日志日志量会很小,但是会有部分执行 数据一致性问题

  • 物理日志
    • 优点:恢复时可直接通过日志覆盖,不依赖原页面上面的内容。并且是幂等的。
    • 缺点:日志量很大
  • 逻辑日志
    • 优点:日志量小
    • 缺点:
      • 插入记录时 , 如果表中有多个索引 需要向B-TREE中插入记录,有可能第一个成功了第二个没有成功。
      • 索引分裂时可能需要将页A中数据移动一半到B中,A页写入磁盘成功,B没有写入磁盘时发生了Crash
  • Innodb日志方式
    • 采用逻辑与物理相结合 物理到Page Page内部是逻辑的(space id, page no, operation code, data)
    • 虽然采取此方式可以解决部分执行问题 但是数据一致性还是无法解决(因为对于page内的信息使用逻辑日志进行记录,所以当出现坏块时,并不能解决)
时间: 2024-09-04 21:21:21

innodb 日志的相关文章

MySQL Innodb日志机制深入分析

                            MySQL Innodb日志机制深入分析   1.1. Log & Checkpoint Innodb的事务日志是指Redo log,简称Log,保存在日志文件ib_logfile*里面.Innodb还有另外一个日志Undo log,但Undo log是存放在共享表空间里面的(ibdata*文件).   由于Log和Checkpoint紧密相关,因此将这两部分合在一起分析. 名词解释:LSN,日志序列号,Innodb的日志序列号是一个64位

MySQL InnoDB表空间及日志文件简介

MySQL一个显著的特点是其可插拔的存储引擎,因此MySQL文件分为两种:一种是MySQL服务器本身的文件(主要是一 些日志文件,如错误日志.二进制日志等),所有的存储引擎共享:另一种是和具体存储引擎相关的文件.本文主要介 绍和InnoDB存储引擎相关的文件(数据+日志),至于MySQL服务器本身的日志文件,可以参考<[MySQL] 日志文件概述 >. InnoDB表空间文件 InnoDB在很多方面和Oracle非常像,它的数据也是按表空间存储的,表空间是一个在逻辑上为整体的存储块,默认情 况

InnoDB 中文参考手册 --- 2 InnoDB 启动选项

参考|参考手册|中文 InnoDB 中文参考手册 --- 犬犬(心帆)翻译 2 InnoDB 启动选项为了在 MySQL-Max-3.23 中使用 InnoDB 表,你必须在配置文件'my.cnf'或'my.ini'(WINDOWS系统)中的 [mysqld] 区中详细指定配置参数. 作为最小设置,在 3.23 中你必须在 innodb_data_file_path 上指定数据文件名能及大小.如果在'my.cnf'中没有指定innodb_data_home_dir,系统将在 MySQL 的 da

InnoDB 中文参考手册 --- 6 备份和恢复 InnoDB 数据库

备份|参考|参考手册|恢复|数据|数据库|中文 InnoDB 中文参考手册 --- 犬犬(心帆)翻译 6 备份和恢复 InnoDB 数据库安全的数据库管理就是使用正规的数据备份. InnoDB Hot Backup 是一个在线备份工具,你可以在 InnoDB 数据库运行时使用它来实现在线备份.InnoDB Hot Backup 不需要你关闭你的服务器也不需要加任何锁或影响其它普通的数据操作.InnoDB Hot Backup 是一个非免费的附加工具,它的费用为每 MySQL 服务器每年 400

InnoDB行格式对text/blob大变长字段的影响

最近在排查现网Text与Blob类型,发现有不少,在<高性能MySQL(第3版)>看到对这两种变长数据类型的处理会涉及到在磁盘上创建临时表,性能开销比较大.于是把影响blob型数据存储方式了解了一下:row_format. 1. InnoDB的Antelop与Barracuda文件格式 Innodb存储引擎保存记录,是以行的形式存放的(与之对应的是像Google BigTable这种列数据库).在InnoDB 1.0.x版本之前,InnoDB 存储引擎提供了 Compact 和 Redunda

MySQL 通用查询日志(General Query Log)

    同大多数关系型数据库一样,日志文件是MySQL数据库的重要组成部分.MySQL有几种不同的日志文件,通常包括错误日志文件,二进制日志,通用日志,慢查询日志,等等.这些日志可以帮助我们定位mysqld内部发生的事件,数据库性能故障,记录数据的变更历史,用户恢复数据库等等.本文主要描述通用查询日志.   1.MySQL日志文件系统的组成   a.错误日志:记录启动.运行或停止mysqld时出现的问题.   b.通用日志:记录建立的客户端连接和执行的语句.   c.更新日志:记录更改数据的语句

MySQL 二进制日志(Binary Log)

    同大多数关系型数据库一样,日志文件是MySQL数据库的重要组成部分.MySQL有几种不同的日志文件,通常包括错误日志文件,二进制日志,通用日志,慢查询日志,等等.这些日志可以帮助我们定位mysqld内部发生的事件,数据库性能故障,记录数据的变更历史,用户恢复数据库等等.二进制日志,也叫binary log,是MySQL Server中最为重要的日志之一,本文主要描述二进制日志.   1.MySQL日志文件系统的组成   a.错误日志:记录启动.运行或停止mysqld时出现的问题.   b

MySQL死锁与日志相关经验分享

最近线上 MySQL 接连发生了几起数据异常,都是在凌晨爆发,由于业务场景属于典型的数据仓库型应用,白天压力较小无法复现.甚至有些异常还比较诡异,最后 root cause 分析颇费周折.那实际业务当中咱们如何能快速的定位线上 MySQL 问题,修复异常呢?下文我会根据两个实际 case,分享下相关的经验与方法. 1.Case1:部分数据更新失败 某天渠道同学反馈某报表极个别渠道数据为 0,大部分渠道数据正常.这个数据是由一个统计程序每天凌晨例行更新的,按理来说,要么全部正常,要么全部失败,那会

MySQL · 引擎特性 · InnoDB IO子系统

前言 InnoDB做为一款成熟的跨平台数据库引擎,其实现了一套高效易用的IO接口,包括同步异步IO,IO合并等.本文简单介绍一下其内部实现,主要的代码集中在os0file.cc这个文件中.本文的分析默认基于MySQL 5.6,CentOS 6,gcc 4.8,其他版本的信息会另行指出. 基础知识 WAL技术 : 日志先行技术,基本所有的数据库,都使用了这个技术.简单的说,就是需要写数据块的时候,数据库前台线程把对应的日志先写(批量顺序写)到磁盘上,然后就告诉客户端操作成功,至于真正写数据块的操作