Postgresql

如果事務在中間中止,寫入的 WAL 日誌會發生什麼?

  • October 21, 2021

我在考慮下面的場景。

BEGIN TRANSACTION;

INSERT SOMETHING;
INSERT SOMETHING;
##CLIENT COMPUTER EXPLODES

如果我理解正確,在每個 INSERT 語句之後,都會將一個日誌條目寫入數據庫伺服器的 WAL。

在這種情況下,WAL 中現在有 2 行新行,但由於客戶端電腦爆炸,COMMIT 語句將永遠不會執行。那麼寫入 WAL 的 2 行會發生什麼?連接斷開後它們會被刪除嗎?它們會作為不完整交易的殘餘物永久保存嗎?客戶端斷開連接後,ABORT 語句是否會插入到 WAL 中?

WAL 記錄仍然存在;WAL 永遠不會被追溯修改。它們將在恢復期間重放,但由於COMMITWAL 中沒有該事務的記錄,它們將保持不可見。

引用自:https://dba.stackexchange.com/questions/301428