为了账号安全,请及时绑定邮箱和手机立即绑定

mysql innodb 重做日志 写满了怎么办?

mysql innodb 重做日志 写满了怎么办?

繁星淼淼 2019-04-13 08:45:21
innodb数据目录下默认会有2个名为ib_logfile0和ib_logfile1的重做日志文件,mysql写重做日志的过程是,事务进行的过程中,masterthread主线程不断的将事务中的条目,插入到重做日志缓冲,然后同步到磁盘的重做日志文件(ib_logfile),先写日志文件1(ib_logfile0),写满了,再切换至日志文件2(ib_logfile1),当日志文件2被写满了,再切换到日志文件1(ib_logfile0);问题:既然磁盘上的日志文件1和2已经写满了,为什么还会再重新切换到日志1再写入呢?满了还怎么写入?
查看完整描述

2 回答

?
慕码人2483693

TA贡献1860条经验 获得超9个赞

innodb的ib_logfile是一个定长的文件,可以通过my.cnf里面的innodb_log_file_size=64M来设置。mysql会在预分配空间里顺序的写入数据,直到写不下就会换到下一个文件继续写,就像在内存里面使用循环数组一样。一般这种log没什么长期存在的价值,所以这样的策略非常节省磁盘空间,且可以避免因为文件大小增长造成的磁盘碎片、额外的IO等问题。
                            
查看完整回答
反对 回复 2019-04-13
  • 2 回答
  • 0 关注
  • 358 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信