Postgresql
如果事務在中間中止,寫入的 WAL 日誌會發生什麼?
我在考慮下面的場景。
BEGIN TRANSACTION; INSERT SOMETHING; INSERT SOMETHING; ##CLIENT COMPUTER EXPLODES
如果我理解正確,在每個 INSERT 語句之後,都會將一個日誌條目寫入數據庫伺服器的 WAL。
在這種情況下,WAL 中現在有 2 行新行,但由於客戶端電腦爆炸,COMMIT 語句將永遠不會執行。那麼寫入 WAL 的 2 行會發生什麼?連接斷開後它們會被刪除嗎?它們會作為不完整交易的殘餘物永久保存嗎?客戶端斷開連接後,ABORT 語句是否會插入到 WAL 中?
WAL 記錄仍然存在;WAL 永遠不會被追溯修改。它們將在恢復期間重放,但由於
COMMIT
WAL 中沒有該事務的記錄,它們將保持不可見。