美文网首页
mysql redo log

mysql redo log

作者: 转过 | 来源:发表于2019-06-17 21:53 被阅读0次

    存储位置:ib_logfile0、ib_logfile1(多文件)

    Lsn:日志位置信息,8字节(提交一个事务+1)(5.6.3以上最大可设置512G)

    日志页面:大小512字节,与机械硬盘块大小对齐 

    设置:redo_log_size

    设置非常大,奔溃恢复时间较长(后续可能会有多线程恢复)

    与buffer大小匹配 buffer_pool大小与日志容量大小设置为10~5:1 

    日志缓冲区

    日志写入也是io操作,如何保证日志写入速度?答案是日志缓冲区

    配置:innodb_log_buffer_size

    配置:innodb_flush_log_at_commit (日志刷盘策略)建议设置为2

    0:只写入日志缓存,(不能保证安全性),会丢失1秒数据(master每秒刷盘)

    1:立马刷盘(性能下降)

    2:写入操作系统,不写入磁盘,等待操作系统自动刷盘

    日志刷盘时机

    1.log buffer用完

    2.master线程每秒执行一次

    3.每次mdl时,如果日质超过预设,将主动日志刷盘,避免执行过程中被动等待刷盘

    4.检查点时,保证lsn最小(最旧)的日志刷盘了

    5.提交逻辑事务时innodb_flush_log_at_commit日志刷盘策略行文,同上。

    redo log的意义

    日志是数据库系统存在的意义,没有日志数据库就会退化为文件系统

    减少数据page的刷盘数量

    将数据的随机写变为日志顺序写,以提高数据库性能

    保证buffer poll内存读写安全

    相关文章

      网友评论

          本文标题:mysql redo log

          本文链接:https://www.haomeiwen.com/subject/cpctqctx.html