本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
RDS for PostgreSQL 中的 NOTICE 訊息說明
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: 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: Your database is currently running aggressive vacuum to prevent wraparound, monitor autovacuum performance.
如 NOTICE 所示,繼續監控清空的效能。如需積極清空的詳細資訊,請參閱 積極清空 (以防止包裝) 正在執行
- 當自動清空關閉時
-
如果資料庫執行個體上已停用自動清空,
postgres_get_av_diag()
函數會產生下列通知:NOTICE: Autovacuum is OFF, we strongly recommend to enable it, no restart is necessary.
自動清空是 RDS for PostgreSQL 資料庫執行個體的重要功能,可確保順暢的資料庫操作。它會自動移除舊的資料列版本、回收儲存空間,並防止資料表膨脹,有助於保持資料表和索引的效率,以獲得最佳效能。此外,它可以防止交易 ID 包裝,這會停止 Amazon RDS 執行個體上的交易。停用自動清空可能會導致資料庫效能和穩定性的長期下降。我們建議您隨時將其保留。如需詳細資訊,請參閱了解 RDS for PostgreSQL 環境中的自動清空
。 注意
關閉自動清空不會停止積極的清空。這些仍會在您的資料表達到
autovacuum_freeze_max_age
閾值時發生。 - 剩餘的交易數量非常低
-
當包裝清空即將到期時,
postgres_get_av_diag()
函數會產生下列通知。當您的 Amazon RDS 執行個體有 1 億筆交易未可能拒絕新交易時,就會發出此通知。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
上手動啟動 ,以防止交易失敗。