🎯 什麼情境該想到我

當你想理解(或自己實作)「系統當機/斷電後,資料如何不丟、狀態如何回復一致」時。

⚙️ 怎麼用

核心原則:先寫日誌,再改資料(Write-Ahead)。 只要日誌落盤,就算資料還沒寫完,重啟後也能靠日誌重建。

  1. 每次修改前,先把「要做什麼」順序追加寫入 WAL 並 fsync 落盤。
  2. 提交(commit)以日誌寫入成功為準,實際資料頁可稍後再刷。
  3. 崩潰復原(ARIES 三階段):分析 → 重做(redo 已提交但未落盤的)→ 撤銷(undo 未提交的)。
  4. WAL 也是複製與 CDC 的資料來源(把日誌串流給從庫)。

🧪 我實際套用的紀錄

  • 2026-07-15:(待填)

⚠️ 注意

  • 「寫了」不等於「落盤」;沒 fsync 的日誌在斷電時一樣會丟。持久化的關鍵在 fsync。

🔗 相關工具