预写日志(Write-Ahead Logging)
缩写:WAL
简述
修改数据页之前先持久化描述变更的日志,使崩溃后可用日志重放恢复。是事务持久性与许多复制的基础。
为何出现
仅改内存/数据文件无法在宕机后可靠恢复已提交事务。
使用场景
理解 commit 延迟、复制源、备份位点、磁盘 fsync。
在体系中的位置
事务提交 → 日志落盘 → 数据页可稍后刷盘;恢复时 redo/undo。
组成与要点
flowchart LR
修改 --> WAL --> 数据页
flowchart LR 修改 --> WAL --> 数据页
实践与应用
• 区分同步提交与组提交优化。
• 复制与备份常跟 WAL/ binlog 位点。
• 日志盘性能直接影响 TPS。
注意事项
• 关同步落盘提速会牺牲 D。
• 日志膨胀与保留策略影响磁盘。
对比与易混
WAL/redo vs 二进制业务日志/CDC;undo 用于回滚与 MVCC。
信号与度量
日志写入延迟、fsync 时间、日志生成速率。
关联术语
• 事务:持久化基础
• 检查点:缩小重放
• 复制:日志常作复制源