MySQL日志和数据落盘策略
redo log
写入时机
事务中,数据发生修改
写入内容
物理日志,某个表某数据页某偏移量进行修改
刷盘时机
事务提交
log buffer空间不足
CheckPoint——InnoDB检查点,会定期检查脏数据,并将脏数据页刷新和对应日志刷新进磁盘
后台线程定期落盘
正常关闭服务器
特点
顺序写入,写入磁盘的空间是连续性的
重做日志是循环使用的,可以理解为循环队列
undo log
写入时机
事务中,数据发生修改
写入内容
sql语句,修改的反向操作
刷盘时机
undo log的存储依赖于redo log,undo log的修改会先记录在redo log中,随着redo log的刷盘进行刷盘
bin log
写入时机
事务中,先把日志写到binlog cache,事务提交的时候,再把binlog cache写到bin log文件中
写入内容
二进制数据
刷盘时机
写入文件系统缓冲区
刷新到磁盘
sync_binlog=0;不会立即调用fsync,交由操作系统调用
sync_binlog=1;立即调用fsync
sync_binlog>N;当N个事务提交才会调用fsync
一文搞懂MySQL中redolog,undolog,binlog和数据落盘时机
最新推荐文章于 2025-03-17 19:31:07 发布