# 预写日志（Write-Ahead Logging）

### 缩写：WAL

### 简述

修改数据页之前先持久化描述变更的日志，使崩溃后可用日志重放恢复。是事务持久性与许多复制的基础。

### 为何出现

仅改内存/数据文件无法在宕机后可靠恢复已提交事务。

### 使用场景

理解 commit 延迟、复制源、备份位点、磁盘 fsync。

### 在体系中的位置

事务提交 → 日志落盘 → 数据页可稍后刷盘；恢复时 redo/undo。

### 组成与要点

```mermaid
flowchart LR
  修改 --> WAL --> 数据页

```

### 实践与应用

• 区分同步提交与组提交优化。
• 复制与备份常跟 WAL/ binlog 位点。
• 日志盘性能直接影响 TPS。

### 注意事项

• 关同步落盘提速会牺牲 D。
• 日志膨胀与保留策略影响磁盘。

### 对比与易混

WAL/redo vs 二进制业务日志/CDC；undo 用于回滚与 MVCC。

### 信号与度量

日志写入延迟、fsync 时间、日志生成速率。

### 关联术语

• 事务：持久化基础
• 检查点：缩小重放
• 复制：日志常作复制源
