本文說明 PostgreSQL 資料庫中 VACUUM
作業的基礎知識。並說明監控和調整資料庫引擎的機制,以維護資料庫執行個體的健康狀態。
PostgreSQL 使用以快照為基礎的並行通訊協定,在修改資料時建立多個資料列版本。這些資料列版本可用於透過計算的快照讀取資料的公開版本,而不需要取得資料列的讀取鎖定。PostgreSQL 會維護每個資料列的交易 ID (插入和刪除的交易 ID),並使用交易 ID 和計算的快照,判斷資料列的顯示狀態。隨著舊版資料持續增加,掃描資料 (資料表掃描或索引掃描) 所需的時間也會增加。為提升掃描作業的回應時間,並有效運用空間,您需要回收用於維護版本的版本和中繼資料 (例如交易 ID)。
VACUUM
作業會回收已刪除的版本 (垃圾收集) 和交易 ID (凍結交易 ID)。VACUUM
作業會在不同模式下處理資料,資料可用性也有所不同。凍結交易 ID 對資料庫系統的健康狀況至關重要,因為系統會在已使用的交易 ID 空間進入保留空間時封鎖寫入器。
您設定的 autovacuum
工作會持續嘗試回收交易 ID,但可能會失敗。這項失敗可能是因為設定不完整,或是交易 ID 的建立率過高,導致 autovacuum
工作無法趕上工作負載。本文件的目的,是說明如何使用 VACUUM
作業以及機制,以調整及監控 VACUUM
作業的不同層面。
總覽
本文件涵蓋以下內容:
- 凍結交易 ID。
- 監控交易 ID。
- 釋出儲存空間。
- 設定 Cloud Monitoring 的自動快訊。
如要讀取完整的白皮書,請點選以下按鈕: