PostgreSQL 自動Vacuum配置

2021-09-11 02:56:45 字數 2559 閱讀 8422

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的專案可以覆蓋每張表。

Linux配置postgresql自動備份

1 pg dump資料庫備份命令 usr pgsql 9.3 bin pg dump f c o u dotop h 127.0.0.1 p 5432 f data erp data db backup geyt 20170214 09 37 55.sql geyt2.linux配置postgres...

PostgreSQL之時間戳自動更新

postgresql之時間戳自動更新 問題描述 postgresql執行insert語句時,自動填入時間的功能可以在建立表時實現,但更新表時時間戳不會自動自動更新。在mysql中可以在建立表時定義自動更新字段,比如 create table ab id int,age int,changetimes...

萬融鏈(VAC)有哪些實際應用前景?

區塊鏈實質上是一種集體式記錄方式。特別之處在於它別出心裁地採用一組技術,實現了記錄結果的真實可信,難以毀壞也無法篡改。張孝榮說,一是人人都有權記錄,並且互相認證以辨真假,這叫共識機制 二是人人都無法篡改記錄,因為有密碼學簽名 三是人人都有副本,所以即使有的賬本損壞了,整體也不受影響,這叫分布式儲存。...