以前,我认为重做日志是用来在发生崩溃时恢复数据库的。但是当我看到下面的注释时,我觉得我错了:
崩溃恢复
崩溃后再次启动 MySQL 时发生的清理活动。对于 InnoDB 表,使用重做日志中的数据重播来自不完整事务的更改。崩溃前提交但尚未写入数据文件的更改将从双写缓冲区中重建。当数据库正常关闭时,这种类型的活动在关闭期间由清除操作执行。
在正常操作期间,提交的数据可以在更改缓冲区中存储一段时间,然后再写入数据文件。在保持数据文件最新(这会在正常操作期间引入性能开销)和缓冲数据(这会使关机和崩溃恢复需要更长的时间)之间总是需要权衡取舍。另见更改缓冲区、提交、崩溃、数据文件、双写缓冲区、InnoDB、清除、重做日志。
它来自 mysql refman-5.7-en.pdf。
如果是真的,不知道redo log有什么用。因为,当崩溃发生时,mysql 可以通过双写缓冲区自行恢复。似乎重做日志没有意义。也许我忽略了某个地方,但我不知道。
我想知道它们之间的区别以及重做日志对 mysql InnoDB 是否重要?