PostgreSQL 自動Vacuum配置

PostgreSQL的Vacuum由於以下原因需要定期執行。

釋放,再利用因更新或者刪除更新而佔用的磁盤空間。
更新PostgreSQL 查詢計劃用的統計數據。

避免事務ID的重置而引起非常老的數據丟失。

VACUUM 的標準SQL文的執行和其他的對數據庫的實際操作可以並行處理。 SELECT 、INSERT 、UPDATE 、DELETE 等命令和同通常一樣繼續能夠執行。但是,VACUUM處理中的時候, ALTER TABLE ADD COLUMN等等的命令不能夠對錶進行重新定義。 還有,由於執行VACUUM 的時候,有大量的I/O操作,其他的操作可能性能比較低,比如查詢的反應非常慢。爲了較少對性能的影響,可以通過參數來調整。

autovacuum (boolean ):
數據庫服務器是否設置爲自動vacuum。默認爲 自動vacuum。 但是如果要讓vacuum能夠正常運轉,必須使 track_counts 有效。 track_counts這個參數在 postgresql.conf配置文件內,或者通過命令來設置。

即使設置不是自動vacuum。系統發現有防止事務ID的重置的必要的時候也會自動啓動

log_autovacuum_min_duration (integer ):
設置執行時間超過多長 的vacuum才輸出log。時間單位毫秒。

如果這個參數設置爲0的話,所有vacuum相關 的log都輸出。

如果這個參數設置爲-1的話,這個也是默認設置。log的輸出無效,也就是所有vacuum相關 的log都不輸出。

這個參數的設置可以修改postgresql.conf配置文件,也可以通過命令來設置。

autovacuum_max_workers (integer ):
設置能夠同時執行的vacuum最大進程數。 默認是3個。

這個參數的設置可以修改postgresql.conf配置文件,也可以通過命令來設置。

autovacuum_naptime (integer ):
設置數據庫執行vacuum的最小延遲。時間單位是分。默認是1分鐘。
這個參數的設置可以修改postgresql.conf配置文件,也可以通過命令來設置。

autovacuum_vacuum_threshold (integer ):
設置任何一張表內觸發VACUUM 的 更新,刪除tuple的最小數。默認爲50。

這個參數的設置可以修改postgresql.conf配置文件,也可以通過命令來設置。這個設定通過 pg_autovacuum的項目可以覆蓋每張表。

autovacuum_analyze_threshold (integer ):
設置任何一張表內觸發ANALYZE 的更新,刪除tuple的最小數。默認爲50。

這個參數的設置可以修改postgresql.conf配置文件,也可以通過命令來設置。這個設定通過 pg_autovacuum的項目可以覆蓋每張表。

autovacuum_vacuum_scale_factor (floating point ):
是否觸發VACUUM的判斷的時候 、設置 autovacuum_vacuum_threshold 追加的表容量斷片。默認是0.2(即20%)。

這個參數的設置可以修改postgresql.conf配置文件,也可以通過命令來設置。這個設定通過 pg_autovacuum的項目可以覆蓋每張表。

autovacuum_analyze_scale_factor (floating point ):
是否觸發 ANALYZE 的判斷的時候 、設置 autovacuum_vacuum_threshold 追加的表容量斷片。默認是0.1(即10%)。

這個參數的設置可以修改postgresql.conf配置文件,也可以通過命令來設置。這個設定通過 pg_autovacuum的項目可以覆蓋每張表。

autovacuum_freeze_max_age (integer ):
爲了防止事務ID的重置,VACUUM強制操作前,設置表的 pg_class .relfrozenxid字段的最大值。默認是2億。

這個參數只能夠在啓動的時候設置。

autovacuum_vacuum_cost_delay (integer ):
設置自動vacuum操作中cost延遲。默認是20毫秒。設置的爲-1的話,使用vacuum_cost_delay的值。

這個參數的設置可以修改postgresql.conf配置文件,也可以通過命令來設置。這個設定通過 pg_autovacuum的項目可以覆蓋每張表。

autovacuum_vacuum_cost_limit (integer ):
設置自動vacuum操作中cost的最大界限值。默認是-1,這時候用vacuum_cost_limit的值。 這個參數的設置可以修改postgresql.conf配置文件,也可以通過命令來設置。這個設定通過 pg_autovacuum的項目可以覆蓋每張表。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章