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

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

慕码人2483693

innodb的ib_logfile是一个定长的文件,可以通过my.cnf里面的innodb_log_file_size=64M来设置。mysql会在预分配空间里顺序的写入数据,直到写不下就会换到下一个文件继续写,就像在内存里面使用循环数组一样。一般这种log没什么长期存在的价值,所以这样的策略非常节省磁盘空间,且可以避免因为文件大小增长造成的磁盘碎片、额外的IO等问题。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript