天天看點

PostgreSQL 10.1 手冊_部分 III. 伺服器管理_第 19 章 伺服器配置_19.10. 自動清理

19.10. 自動清理

這些設定控制自動清理特性的行為。 詳情請見

第 24.1.6 節

。請注意在每個表基礎上可以重寫這些設定; 參閱

存儲參數

autovacuum

 (

boolean

)
控制伺服器是否運作自動清理啟動器背景程序。預設為開啟,不過要自動清理正常工作還需要啟用 track_counts 。該參數隻能在

postgresql.conf

檔案或伺服器指令行中設定。 然而,為單表通過修改表存儲參數可以禁用自動清理。

注意即使該參數被禁用,系統也會在需要防止事務ID回卷時發起清理程序。詳情請見

第 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

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億事務。該參數隻能在伺服器啟動時設定,但是對于個别表可以通過修改存儲參數來降低該設定。詳見

autovacuum_multixact_freeze_max_age

integer

VACUUM

操作被強制執行來防止表中多事務ID回卷之前,一個表的

pg_class

relminmxid

域能保持的最大年齡(多事務的)。注意即便自動清理被禁用,系統也将發起自動清理程序來阻止回卷。

清理多事務也允許從

pg_multixact/members

pg_multixact/offsets

子目錄中移除舊檔案,這也是為什麼預設值被設定為較低的400萬多事務。該參數隻能在伺服器啟動時設定,但是對于個别表可以通過修改存儲參數來降低該設定。詳見 第 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

本文轉自PostgreSQL中文社群,原文連結: