mysql innodb 重做日志 写满了怎么办?
PHP中文网
PHP中文网 2017-04-17 11:31:08
[MySQL讨论组]

innodb数据目录下默认会有2个名为ib_logfile0和ib_logfile1的重做日志文件,mysql写重做日志的过程是,事务进行的过程中,master thread主线程不断的将事务中的条目,插入到重做日志缓冲,然后同步到磁盘的重做日志文件(ib_logfile),先写日志文件1(ib_logfile0),写满了,再切换至日志文件2(ib_logfile1),当日志文件2被写满了,再切换到日志文件1(ib_logfile0);

问题:既然磁盘上的日志文件1和2已经写满了,为什么还会再重新切换到日志1再写入呢?满了还怎么写入?

PHP中文网
PHP中文网

认证高级PHP讲师

全部回复(1)
迷茫

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号