19.10. 自動清理
這些設定控制autovacuum特性的行為。詳情請參考 Section 24.1.6。注意很多這些設定可以被針對每個表 的設定所覆寫,請見存儲參數。
autovacuum (boolean)
控制伺服器是否運作自動清理啟動器背景程序。預設為開啟, 不過要自動清理正常工作還需要啟用track_counts。 該參數隻能在postgresql.conf檔案或伺服器指令行中設定, 不過,通過更改表存儲參數可以為表禁用自動清理。
注意即使該參數被禁用,系統也會在需要防止事務ID回卷時發起清理程序。詳情請見Section 24.1.5。
log_autovacuum_min_duration (integer)
如果自動清理運作至少該值所指定的毫秒數,被自動清理執行的每一個動作都會被日志記錄。 将該參數設定為0會記錄所有的自動清理動作。-1(預設值)将禁用對自動清理動作的記錄。 例如,如果你将它設定為250ms,則所有運作250ms或更長時間的 自動清理和分析将被記錄。此外,當該參數被設定為除-1外的任何值時, 如果一個自動清理動作由于一個鎖沖突或者被并發删除的關系而被跳過,将會為此記錄一個消息。 開啟這個參數對于追蹤自動清理活動非常有用。這個參數隻能在 postgresql.conf檔案或者伺服器指令行中設定。但是可以通過更改表的存儲 參數為個别表覆寫這個設定。
autovacuum_max_workers (integer)
指定能同時運作的自動清理程序(除了自動清理啟動器之外)的最大數量。預設值為3。該參數隻能在伺服器啟動時設定。
autovacuum_naptime (integer)
指定自動清理在任意給定資料庫上運作的最小延遲。在每一輪中背景程序檢查資料庫并根據需要為資料庫中的表發出VACUUM和ANALYZE指令。延遲以秒計,且預設值為1分鐘(1min)。該參數隻能在postgresql.conf檔案或在伺服器指令行上設定。
autovacuum_vacuum_threshold (integer)
指定能在一個表上觸發VACUUM的被插入、被更新或被删除元組的最小數量。預設值為50個元組。該參數隻能在postgresql.conf檔案或在伺服器指令中設定。但是對個别表可以通過修改表存儲參數來覆寫該設定。
autovacuum_analyze_threshold (integer)
指定能在一個表上觸發ANALYZE的被插入、被更新或被删除元組的最小數量。預設值為50個元組。該參數隻能在postgresql.conf檔案或在伺服器指令中設定。但是對個别表可以通過修改表存儲參數來覆寫該設定。
autovacuum_vacuum_scale_factor (floating point)
指定一個表尺寸的分數,在決定是否觸發VACUUM時将它加到
autovacuum_vacuum_threshold
上。預設值為0.2(表尺寸的20%)。該參數隻能在postgresql.conf檔案或在伺服器指令中設定。但是對個别表可以通過修改表存儲參數來覆寫該設定。
autovacuum_analyze_scale_factor (floating point)
指定一個表尺寸的分數,在決定是否觸發ANALYZE時将它加到
autovacuum_analyze_threshold
上。預設值為0.1(表尺寸的10%)。該參數隻能在postgresql.conf檔案或在伺服器指令中設定。但是對個别表可以通過修改表存儲參數來覆寫該設定。
autovacuum_freeze_max_age (integer)
指定在一個VACUUM操作被強制執行來防止表中事務ID回卷之前,一個表的pg_class.relfrozenxid域能保持的最大年齡(事務的)。注意即便自動清理被禁用,系統也将發起自動清理程序來阻止回卷。
清理也允許從pg_xact子目錄中移除舊檔案,這也是為什麼預設值被設定為較低的2億事務。該參數隻能在伺服器啟動時設定,但是對于個别表可以通過修改表存儲參數來降低該設定。詳見Section 24.1.5。
autovacuum_multixact_freeze_max_age (integer)
指定在一個VACUUM操作被強制執行來防止表中多事務ID回卷之前,一個表的
pg_class.relminmxid
域能保持的最大年齡(多事務的)。注意即便自動清理被禁用,系統也将發起自動清理程序來阻止回卷。
清理多事務也允許從
pg_multixact/members
和
pg_multixact/offsets
子目錄中移除舊檔案,這也是為什麼預設值被設定為較低的400萬多事務。該參數隻能在伺服器啟動時設定,但是對于個别表可以通過修改表存儲參數來降低該設定。詳見Section 24.1.5.1。
autovacuum_vacuum_cost_delay (integer)
指定用于自動VACUUM操作中的代價延遲值。如果指定-1(預設值),則使用
vacuum_cost_delay
值。預設值為20毫秒。該參數隻能在postgresql.conf檔案或在伺服器指令中設定。但是對個别表可以通過修改表存儲參數來覆寫該設定。
autovacuum_vacuum_cost_limit (integer)
指定用于自動VACUUM操作中的代價限制值。如果指定-1(預設值),則使用
vacuum_cost_limit
值。注意該值被按比例地配置設定到運作中的自動清理工作者上(如果有多個),是以每一個工作者的限制值之和不會超過這個變量中的值。該參數隻能在postgresql.conf檔案或在伺服器指令中設定。但是對個别表可以通過修改表存儲參數來覆寫該設定。