接着上篇,如今开始看看各个模块,文档上的内容有点弱, 详细的能够看看,《MySQL技术内幕(InnoDB存储引擎)》这本书的第七章!html
Redo Log是基于磁盘的数据结构,用来恢复因为未完成事务形成的数据修改。默认状况下,Redo Log在ib_logfile0和ib_logfile1这个两个文件中,m默认大小为5MB。事务的执行,会向redo log中记录相应数据页的修改。mysql
Redo Log用保证事务的持久性。Redo Log一般是物理日志,记录的是数据页的物理修改。sql
redo log size = innodb_log_files_in_group * innodb_log_file_size数据库
Redo Log:redo log buffer 、redo log file数据结构
Redo Log持久化:redo log buffer -> os buffer -> redo log filespa
InnoDB记录了数据文件的物理修改,而且保证日志先行,即WAL(write-ahead logging)。日志
LNS(log sequence number)记录日志序号。htm
Redo Log以顺序的方式写入文件,写满时则回溯到第一个文件,进行覆盖。事务
Redo Log在存储引擎层产生,是物理格式日志;bin log在数据库的上层产生,是逻辑日志,不管什么存储引擎都会产生。内存
经过innodb_flush_log_at_trx_commit控制,值有0、一、2,默认为1
参考Log Block,这篇文章的图描述的很清楚。
redo log基于页存储,默认大小为16kb,由多个log block组成,一个log block大小为512字节。
参考LSN
让redo log files足够大,但不能太大
增长log buffer大小
配置innodb_log_write_ahead_size配置选项,以免“读写”。
两个参考文章: