Redo Log - Write Ahead Log (WAL) - 重做日志

- 只适用于 InnoDB
- 物理日志, 记录的是在某个数据页做了什么修改
- 保证了事务的持久性
- 事务提交时, 只需要持久化 Redo Log 就算完成了, 不需要等到 Buffer Pool 脏页刷盘
- 为了防止 Buffer Pool 脏页丢失设计的; 发生崩溃时, Buffer Pool 的脏页可能没持久化, 但是 Redo Log 持久化了; 重启后使用 Redo Log 恢复
- 使用追加操作, 磁盘操作是顺序写, 提升了性能
Redo Log 不是直接写入磁盘的, 通过 redo log buffer
Redo Log vs Undo Log
-
都只适用于 InnoDB
-
Redo Log 记录事务修改后的数据状态, 记录的是更新后的值, 主要用于事务崩溃回复, 保证事务持久性
-
Undo Log 记录事务修改前的数据状态, 记录的是更新前的值, 主要用于事务回滚, 保证事务的原子性
-
事务提交失败/事务执行错误, MySQL重启后通过 Undo Log 回滚事务
-
事务提交后发生崩溃(宕机崩溃), 重启后通过 Redo Log 恢复事务

