本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Timeout:VacuumDelay
Timeout:VacuumDelay
事件表示已超過清空 I/O 的成本限制,並且清空程序已進入休眠狀態。清空操作會停止一段時間,長度為各自成本延遲參數中指定的持續時間,然後恢復其運作。對於手動清空命令,延遲是在 vacuum_cost_delay
參數中指定。對於自動清空常駐程式,延遲是在 autovacuum_vacuum_cost_delay parameter.
中指定。
支援的引擎版本
所有 RDS for PostgreSQL 版本都支援此等待事件資訊。
Context
PostgreSQL 同時具有自動清空常駐程式和手動清空命令。對於 RDS for PostgreSQL 資料庫執行個體,自動清空程序預設為「開啟」。手動清空命令是根據需要而使用,例如,用來清除失效元組的資料表或產生新的統計資料。
進行清空時,PostgreSQL 會在系統執行各種 I/O 操作時,使用內部計數器來追蹤預估的成本。當計數器達到成本限制參數所指定的值時,執行操作的程序休眠一段時間,長度為成本延遲參數中指定的短暫持續時間。然後,它會重設計數器並繼續操作。
清空程序具有可以用來調節資源耗用的參數。自動清空和手動清空命令具有自己的參數,用於設定成本限制值。它們還有自己的參數來指定成本延遲,這是達到限制時將清空置於休眠狀態的時間量。如此一來,成本延遲參數會當作資源耗用的限流機制運作。在下列清單中,您可以找到這些參數的描述。
影響自動清空常駐程式限流的參數
-
autovacuum_vacuum_cost_limit
– 指定用於自動清空操作的成本限制值。增加此參數的設定可讓清空程序使用更多資源並減少Timeout:VacuumDelay
等待事件。 -
autovacuum_vacuum_cost_delay
– 指定用於自動清空操作的成本延遲值。預設值為 2 毫秒。將延遲參數設為 0 會關閉限流機制,因此Timeout:VacuumDelay
等待事件不會出現。
如需詳細資訊,請參閱 PostgreSQL 文件中的自動資料清理
影響手動清空程序限流的參數
-
vacuum_cost_limit
– 清空程序進入休眠狀態的閾值。根據預設,限制為 200。此數字代表各種資源所需額外 I/O 的累計成本預估值。增加此值可減少Timeout:VacuumDelay
等待事件的數目。 -
vacuum_cost_delay
– 達到清空成本限制時,清空程序休眠的時間量。預設設定為 0,表示此功能已關閉。您可以將此值設為整數值,以指定開啟此功能的毫秒數,但建議您將其保留為預設設定。
如需 vacuum_cost_delay
參數的詳細資訊,請參閱 PostgreSQL 文件中的資源耗用
若要進一步了解如何設定和使用自動清空搭配 RDS for PostgreSQL,請參閱 在 Amazon RDS for PostgreSQL 上使用 Postgre 自動清空SQL。
等待變多的可能原因
Timeout:VacuumDelay
會受到成本限制參數設定 (vacuum_cost_limit
、autovacuum_vacuum_cost_limit
) 與控制清空休眠持續時間的成本延遲參數 (vacuum_cost_delay
、autovacuum_vacuum_cost_delay
) 之間的平衡影響。提高成本限制參數值允許清空使用更多資源,然後再進入休眠狀態。這會導致更少的 Timeout:VacuumDelay
等待事件。增加其中一個延遲參數會導致 Timeout:VacuumDelay
等待事件更頻繁地發生,時段更長。
autovacuum_max_workers
參數設定也可以增加 Timeout:VacuumDelay
的數目。每個額外的自動清空工作者程序都有助於內部計數器機制,因此可以比使用單一自動清空工作者程序更快地達到限制。由於達到成本限制的速度更快,成本延遲會更頻繁地生效,造成更多的 Timeout:VacuumDelay
等待事件。如需詳細資訊,請參閱 PostgreSQL 文件中的 autovacuum_max_worker
大型物件 (例如 500 GB 或更大) 也會引發此等待事件,因為清空可能需要一些時間才能完成處理大型物件。
動作
如果清空操作如預期完成,則不需要修補。換言之,此等待事件不一定指出問題。其表示清空將進入休眠一段時間,長度為延遲參數中指定的時段,以便資源可以套用到需要完成的其他程序。
如果您想要清空操作更快地完成,則可以降低延遲參數。這可以縮短清空休眠的時間。