MySQL的undo日志用于记录事务的操作,以便在需要回滚的时候可以恢复数据。那么,undo日志在何时落盘呢?

对于InnoDB存储引擎来说,MySQL会根据redo日志和undo日志的时间差异来决定何时落盘。当redo日志被写入磁盘后,MySQL会将缓存中的undo日志标记为可以落盘,并有一个后台线程定期处理这些可写入磁盘的undo日志。
同时,MySQL还有一个函数叫做innodb_max_undo_log_size,用于设置最大的undo日志大小。当undo日志达到一定大小时,MySQL会强制落盘undo日志,以防止系统崩溃导致事务丢失。
// 设置最大undo日志大小为1GB SET GLOBAL innodb_max_undo_log_size = 1073741824;
需要注意的是,如果缓存中的undo日志未被写入磁盘而发生系统崩溃,这些未落盘的undo日志将会丢失并无法恢复。因此,建议在系统中定期完成checkpoint,以保证undo日志被落盘,从而保证事务的持久性和一致性。
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论