文章目录
- 题目
- 扩展学习
- WAL工作原理流程图
题目
扩展学习
WAL(Write Ahead Log)预写日志:
WAL是PostgreSQL先写日志、后写数据的机制,用来防止数据丢失、提升数据恢复能力。
流程:
事务先写日志文件(WAL)到磁盘。后台慢慢将变更同步到数据页(实际数据文件)。如果崩溃了,可用 WAL 把未完成事务重放(replay)。
所有的 WAL 日志都保存在目录:
$PGDATA/pg_wal/ (旧版本是 pg_xlog)
每个 WAL 日志文件 = 一个 段(segment)
每段的默认大小为:16MB(也就是 16 × 1024 KB)
题目中选项为kb,个人认为不够严谨
WAL工作原理流程图
+-----------------------+| SQL 命令 |+-----------------------+↓+----------------------------+| 修改 Buffer 缓冲区中的数据页 |+----------------------------+↓+--------------------------+| 生成 WAL 日志并写入 pg_wal |+--------------------------+↓| 通知事务成功提交 |↓后台慢慢将缓冲区刷入磁盘文件(实际数据文件)