Transaction-Log

在典型的 COW 文件系統上,數據庫 WAL 是否冗餘(理論上)?

  • December 22, 2019

編輯:我錯誤地假設所有 COW 文件系統都有 WAL。它似乎 BTRFS 沒有,所以這個問題基本上只適用於 ZFS。

典型的 COW 文件系統,如 ZFS,有自己的 WAL 形式(ZIL,在 ZFS 的情況下)。

在非 COW 文件系統上,DB WAL 對性能(因為它是順序的)和完整性原因(因為缺乏寫完整性保證)都是有意義的;在 COW 文件系統上,這些角色由 FS (WAL) 完成。

正因為如此,在 COW 文件系統上儲存 DB 數據不會使 DB WAL 變得多餘嗎?

不,因為 WAL 也用於從備份恢復——例如,在使用者錯誤的情況下。結合之前的完整備份,它允許恢復到任何時間點——大概是在使用者做壞事之前。

也不會,因為事務可能需要更改文件中的數百個不同位置,而寫時複製並沒有使這更快。但是預寫日誌記錄允許將所有更改以最少的數量寫入 IO,並稍後應用於數據文件。後面的寫入是非同步的,並且受益於寫入合併,因此被許多事務修改的文件位置可能只寫入一次。

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