文章目錄
- 題目
- 擴展學習
- 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 |+--------------------------+↓| 通知事務成功提交 |↓后臺慢慢將緩沖區刷入磁盤文件(實際數據文件)