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