支援的版本:目前 (17) / 16 / 15 / 14 / 13
開發版本:devel
不支援的版本:12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1

19.10. 自動清理 #

這些設定控制自動清理功能的行為。請參閱第 24.1.6 節以取得更多資訊。請注意,許多這些設定可以在每個資料表上覆寫;請參閱儲存參數

autovacuum (boolean) #

控制伺服器是否應執行自動清理啟動器守護進程。預設為開啟;但是,也必須啟用 track_counts,自動清理才能運作。這個參數只能在 postgresql.conf 檔案中或在伺服器命令列上設定;但是,可以變更資料表儲存參數來為個別資料表停用自動清理。

請注意,即使停用此參數,系統也會在必要時啟動自動清理程序,以防止交易 ID 環繞。請參閱第 24.1.5 節以取得更多資訊。

autovacuum_max_workers (integer) #

指定在任何時間可以執行的自動清理程序(自動清理啟動器除外)的最大數量。預設值為三。這個參數只能在伺服器啟動時設定。

autovacuum_naptime (integer) #

指定在任何給定資料庫上執行自動清理之間的最小延遲。在每一輪中,守護進程會檢查資料庫,並視需要對該資料庫中的資料表發出 VACUUMANALYZE 命令。如果未指定單位,則此值將被視為秒。預設值為一分鐘 (1min)。這個參數只能在 postgresql.conf 檔案中或在伺服器命令列上設定。

autovacuum_vacuum_threshold (integer) #

指定在任何一個資料表中觸發 VACUUM 所需的已更新或已刪除元組的最小數量。預設值為 50 個元組。這個參數只能在 postgresql.conf 檔案中或在伺服器命令列上設定;但是,可以變更資料表儲存參數來為個別資料表覆寫此設定。

autovacuum_vacuum_insert_threshold (integer) #

指定在任何一個資料表中觸發 VACUUM 所需的已插入元組的數量。預設值為 1000 個元組。如果指定 -1,則自動清理不會根據插入的數量在任何資料表上觸發 VACUUM 操作。這個參數只能在 postgresql.conf 檔案中或在伺服器命令列上設定;但是,可以變更資料表儲存參數來為個別資料表覆寫此設定。

autovacuum_analyze_threshold (integer) #

指定在任何一個資料表中觸發 ANALYZE 所需的已插入、已更新或已刪除元組的最小數量。預設值為 50 個元組。這個參數只能在 postgresql.conf 檔案中或在伺服器命令列上設定;但是,可以變更資料表儲存參數來為個別資料表覆寫此設定。

autovacuum_vacuum_scale_factor (floating point) #

指定資料表大小的一部分,以新增至 autovacuum_vacuum_threshold,以決定是否觸發 VACUUM。預設值為 0.2(資料表大小的 20%)。這個參數只能在 postgresql.conf 檔案中或在伺服器命令列上設定;但是,可以變更資料表儲存參數來為個別資料表覆寫此設定。

autovacuum_vacuum_insert_scale_factor (floating point) #

指定資料表大小的一部分,以新增至 autovacuum_vacuum_insert_threshold,以決定是否觸發 VACUUM。預設值為 0.2(資料表大小的 20%)。這個參數只能在 postgresql.conf 檔案中或在伺服器命令列上設定;但是,可以變更資料表儲存參數來為個別資料表覆寫此設定。

autovacuum_analyze_scale_factor (floating point) #

指定表格大小的比例,加到 autovacuum_analyze_threshold 中,以決定是否觸發 ANALYZE。預設值為 0.1(表格大小的 10%)。此參數只能在 postgresql.conf 檔案中或在伺服器命令列上設定;但可以透過變更表格儲存參數來覆寫個別表格的設定。

autovacuum_freeze_max_age (integer) #

指定表格的 pg_class.relfrozenxid 欄位在觸發強制執行 VACUUM 操作以防止表格內交易 ID 環繞之前的最大期限(以交易次數計)。請注意,即使在其他情況下停用自動清理時,系統也會啟動自動清理程序以防止環繞。

Vacuum 也能從 pg_xact 子目錄中移除舊檔案,這就是為什麼預設值是一個相對較低的 2 億次交易的原因。此參數只能在伺服器啟動時設定,但可以透過變更表格儲存參數來減少個別表格的設定。如需更多資訊,請參閱第 24.1.5 節

autovacuum_multixact_freeze_max_age (integer) #

指定表格的 pg_class.relminmxid 欄位在觸發強制執行 VACUUM 操作以防止表格內 multixact ID 環繞之前的最大期限(以 multixact 次數計)。請注意,即使在其他情況下停用自動清理時,系統也會啟動自動清理程序以防止環繞。

清理 multixact 也能從 pg_multixact/memberspg_multixact/offsets 子目錄中移除舊檔案,這就是為什麼預設值是一個相對較低的 4 億次 multixact 的原因。此參數只能在伺服器啟動時設定,但可以透過變更表格儲存參數來減少個別表格的設定。如需更多資訊,請參閱第 24.1.5.1 節

autovacuum_vacuum_cost_delay (floating point) #

指定自動 VACUUM 操作中將使用的成本延遲值。如果指定 -1,將使用常規的 vacuum_cost_delay 值。 如果在未指定單位的狀況下指定此值,則將其視為毫秒。預設值為 2 毫秒。此參數只能在 postgresql.conf 檔案中或在伺服器命令列上設定;但可以透過變更表格儲存參數來覆寫個別表格的設定。

autovacuum_vacuum_cost_limit (integer) #

指定自動 VACUUM 操作中將使用的成本限制值。如果指定 -1(預設值),將使用常規的 vacuum_cost_limit 值。 請注意,如果有多個自動清理工作程序正在執行,則該值會按比例分配給這些工作程序,以便每個工作程序的限制總和不超過此變數的值。此參數只能在 postgresql.conf 檔案中或在伺服器命令列上設定;但可以透過變更表格儲存參數來覆寫個別表格的設定。

提交更正

如果您在文件中發現任何不正確之處、與您使用特定功能的經驗不符或需要進一步澄清的地方,請使用此表單回報文件問題。