本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 Aurora PostgreSQL 中識別並解決積極的清空封鎖程式
在 PostgreSQL 中,清空對於確保資料庫在回收儲存體時的運作狀態,並防止交易 ID 包圍
postgres_get_av_diag() 函數有助於識別防止或延遲積極清空進度的問題。提供建議,其中可能包括用於解決可辨識問題的命令,或用於無法辨識問題之進一步診斷的指引。當存留期超過 RDS 的彈性自動清空閾值 5 億筆交易 ID 時,就會報告積極的清空封鎖程式。
交易 ID 的存留期為何?
交易 ID 的 age() 函數會計算自資料庫 (pg_database.datfrozenxid) 或資料表 (pg_class.relfrozenxid) 最舊的未凍結交易 ID 以來發生的交易數量。此值表示自上次積極清空操作以來的資料庫活動,並強調近期 VACUUM 程序的可能工作負載。
什麼是積極清空?
積極的 VACUUM 操作會全面掃描資料表中的所有頁面,包括在一般 VACUUM 期間通常會略過的頁面。此徹底掃描旨在「凍結」接近其最長存留期的交易 ID,有效防止稱為交易 ID 包圍
若要讓 postgres_get_av_diag() 報告封鎖程式,封鎖程式必須至少有 5 億筆舊的交易。