mysql redo log

redo log 是什么

redo log 是mysql innodb引擎下的一种物理日志,记录数据页的修改记录。
redo log 的作用主要是

  • 崩溃恢复,数据库实例在重启的时候,总会重新加载redo log里面的日志信息(last checkpoint之后的)
  • 更加快的commit,数据库写redo log 是追加写,写完就可以commit,后续数据页持久化到ibd文件是后台线程在刷,即刷脏页。

redo log 刷新策略

show engine innodb status
可以看的如下信息

Log sequence number 2830566 日志序列号值
Log flushed up to   2830566 redo 刷新到磁盘的值
Pages flushed up to 2830566 下次做checkpoint 的值
Last checkpoint at  2830557 checkpoint的值,这个值之前的代表已经刷新到ibd文件,不需要检查,这个值之后的才需要进行崩溃恢复
0 pending log flushes, 0 pending chkp writes
97 log i/o's done, 0.00 log i/o's/second
innodb_flush_log_at_trx_commit 含义
0 从redo log buffer 每秒刷新到磁盘
1 commit后就刷新到磁盘
2 commit后只刷新到文件系统缓冲里

redo log 配置

redo log 可以通过innodb_log_files_in_group 来配置为多个
innodb_log_file_size 来表示redo log的大小
例如如下
innodb_log_files_in_group =16
innodb_log_file_size =256M

innodb_log_buffer_size =64M

log block

redo log 在buffer和磁盘都是按照512字节进行存贮的,磁盘扇区也是512字节,所以buffer的 log block 刷新到磁盘是原子的。不需要doublewrite

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 出现原因 redo log 重做日志,是属于InnoDB特有的,为了解决InnoDB在存在脏页时,出现故障造成数据...
    kyo1992阅读 243评论 0 1
  • Redo log是什么? MySQL数据库作为现在互联网公司内最流行的关系型数据库,相信大家都有工作中使用过。In...
    yqh__阅读 15,793评论 0 9
  • redo日志是个啥 我们知道InnoDB存储引擎是以页为单位来管理存储空间的,我们进行的增删改查操作其实本质上都是...
    tracy_668阅读 514评论 1 5
  • 参考博客:https://qimok.cn/584.html[https://qimok.cn/584.html]...
    笔记本一号阅读 954评论 0 1
  • 具体细节 请去掘金购买《MySQL 是怎样运行的:从根儿上理解 MySQL》 redo日志刷盘时机 1.当MTR产...
    简书徐小耳阅读 1,709评论 1 1