本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
postgres_get_av_diag()
函數提供下列NOTICE訊息:
- 當年齡尚未達到監控閾值時
-
postgres_get_av_diag()
用於識別封鎖程式的監控閾值預設為 5 億筆交易。如果postgres_get_av_diag()
產生下列 NOTICE,則表示交易期限尚未達到此閾值。NOTICE:
postgres_get_av_diag()
checks for blockers that prevent aggressive vacuums only, it does so only after exceedingdvb_threshold
which is 500,000,000 and age of this PostgreSQL cluster is currently at 2. - 未連線至具有最舊交易 ID 的資料庫
-
postgres_get_av_diag()
函數在連接至具有最舊交易 ID 存留期的資料庫時,提供最準確的輸出。所報告交易 ID 使用時間最早的資料庫,postgres_get_av_diag()
將與您案例中的「my_database」不同。如果您未連線到正確的資料庫,NOTICE會產生以下內容:NOTICE: You are not connected to the database with the age of oldest transaction ID. Connect to my_database database and run postgres_get_av_diag() for accurate reporting.
基於下列原因,連線至具有最舊交易期限的資料庫非常重要:
-
識別暫存資料表封鎖程式:由於暫存資料表的中繼資料是每個資料庫特有的,因此通常會在建立它們的資料庫中找到它們。不過,如果暫存資料表剛好是最熱門的封鎖程式,並且位於具有最舊交易的資料庫中,則可能會誤導。連接到正確的資料庫可確保正確識別暫存資料表封鎖程式。
-
診斷慢清空:索引中繼資料和資料表計數資訊是資料庫特有的,是診斷慢清空問題的必要項目。
-
- 依年齡區分交易時間最早的資料庫位於 rdsadmin 或 template0 資料庫
-
在某些情況下,
rdsadmin
或template0
資料庫可能會識別為交易 ID 存留期最長的資料庫。如果發生這種情況,postgres_get_av_diag()
會發出下列 NOTICE:NOTICE: The database with the age of oldest transaction ID is
rdsadmin
ortemplate0
, reach out to support if the reported blocker is inrdsadmin
ortemplate0
.確認列出的封鎖程式不是來自這兩個資料庫。如果封鎖程式報告出現在
rdsadmin
或 中template0
,請聯絡 支援,因為這些資料庫無法存取使用者,且需要介入。rdsadmin
或template0
資料庫不太可能包含頂端封鎖程式。 - 當積極清空已在執行時
-
該
postgres_get_av_diag()
函數旨在報告積極的清空程序何時執行,但只會在清空作用中至少 1 分鐘後觸發此輸出。此刻意延遲有助於降低誤報的機會。透過等待, 函數可確保僅報告有效且重要的清空,進而更準確且可靠地監控清空活動。當
postgres_get_av_diag()
函數偵測到一或多個正在進行的積極清空NOTICE時,會產生下列項目。NOTICE: Your database is currently running aggressive vacuum to prevent wraparound, monitor autovacuum performance.
如 所示NOTICE,繼續監控清空的效能。如需積極清空的詳細資訊,請參閱 正在執行積極式清空 (以防止包裝)
- 當自動清空關閉時
-
NOTICE 如果您的資料庫執行個體停用自動清空,
postgres_get_av_diag()
函數會產生下列項目:NOTICE: Autovacuum is OFF, we strongly recommend to enable it, no restart is necessary.
Autovacuum 是 RDS for PostgreSQL 資料庫執行個體的重要功能,可確保順暢的資料庫操作。它會自動移除舊的資料列版本、回收儲存空間,並防止資料表膨脹,有助於保持資料表和索引的效率,以獲得最佳效能。此外,它可以防止交易 ID 包裝,這會停止 Amazon RDS執行個體上的交易。停用自動清空可能會導致資料庫效能和穩定性的長期下降。我們建議您隨時保持此狀態。如需詳細資訊,請參閱在 中了解 PostgreSQL 環境RDS的自動清空
。 注意
關閉自動清空不會停止積極的清空。這些仍會在您的資料表達到
autovacuum_freeze_max_age
閾值時發生。 - 剩餘的交易數量非常低
-
當包裝清空即將到來NOTICE時,
postgres_get_av_diag()
函數會產生下列項目。當您的 Amazon RDS執行個體有 1 億筆交易,而沒有可能拒絕新的交易時,NOTICE就會發出此命令。WARNING: Number of transactions remaining is critically low, resolve issues with autovacuum or perform manual
VACUUM FREEZE
before your instance stops accepting transactions.您需要立即採取動作,以避免資料庫停機。您應該密切監控您的清空操作,並考慮
VACUUM FREEZE
在受影響的資料庫中手動啟動 ,以防止交易失敗。