加载中...

Redo Log(重做日志)是 InnoDB 实现事务持久性(ACID 中的 D)的核心机制,记录"对某数据页做了什么物理修改"。事务提交时只需保证 redo log 落盘,数据页本身可以延后异步刷写,这就是 WAL(预写式日志)思想在 InnoDB 中的体现。
修改先写入内存中的 log buffer,提交时按 innodb_flush_log_at_trx_commit 策略刷盘(1 为每次提交 fsync,最安全)。redo log 文件是固定大小的循环结构,用 LSN(日志序列号)标记位置;checkpoint 推进表示对应的脏页已落盘,其之前的日志空间可被复用。崩溃重启时,InnoDB 从 checkpoint 起重放 redo log,恢复所有已提交但未刷盘的修改。
redo log 是 InnoDB 引擎层的物理日志、循环写;binlog 是 MySQL 服务器层的逻辑日志、追加写,用于复制与归档。两者通过两阶段提交保持一致。

登录 后参与讨论
暂无讨论,来发表第一条评论吧