InnoDB文档笔记(二)—— Redo Log

接着上篇,现在开始看看各个模块,文档上的内容有点弱, 详细的可以看看,《MySQL技术内幕(InnoDB存储引擎)》这本书的第七章!

Redo Log是基于磁盘的数据结构,用来恢复由于未完成事务造成的数据修改。默认情况下,Redo Log在ib_logfile0和ib_logfile1这个两个文件中,m默认大小为5MB。事务的执行,会向redo log中记录相应数据页的修改。

Redo Log用保证事务的持久性。Redo Log通常是物理日志,记录的是数据页的物理修改。

一、相关参数

  • innodb_log_files_in_group
  • innodb_log_file_size

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 file

InnoDB记录了数据文件的物理修改,并且保证日志先行,即WAL(write-ahead logging)。

LNS(log sequence number)记录日志序号。

Redo Log以顺序的方式写入文件,写满时则回溯到第一个文件,进行覆盖。

Redo Log在存储引擎层产生,是物理格式日志;bin log在数据库的上层产生,是逻辑日志,无论什么存储引擎都会产生。

三、Redo Log Flush策略

通过innodb_flush_log_at_trx_commit控制,值有0、1、2,默认为1

  • 0:事务commit时,log Buffer的日志不会写入os buffer,而是每秒写入os buffer,并刷入log file。
  • 1:事务commit时候,log buffer的日志会写入os buffer并刷入log file。
  • 2:事务commit时,log buffer的日志写入os buffer,然后每秒os buffer输入log file。

四、Log Block

参考Log Block,这篇文章的图描述的很清楚。

redo log基于页存储,默认大小为16kb,由多个log block组成,一个log block大小为512字节。

五、Redo Log何时刷入磁盘

  • 发出commit动作时,具体看 Redo Log Flush策略
  • innodb_flush_log_at_timeout控制,默认每一秒一次
  • log buffer使用内存超过一半
  • checkpoint

六、LSN(Log Sequence Number)

参考LSN

七、Optimizing InnoDB Redo Logging

让redo log files足够大,但不能太大

增加log buffer大小

配置innodb_log_write_ahead_size配置选项,以避免“读写”。

两个参考文章:

转载于:https://juejin.im/post/5cac5163e51d456e845b41c8

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值