PostgreSQL 自動(dòng)清理

2021-08-31 14:04 更新

這些設(shè)置控制autovacuum特性的行為。詳情請參考 第 24.1.6 節(jié)。注意很多這些設(shè)置可以被針對(duì)每個(gè)表 的設(shè)置所覆蓋,參見Storage Parameters。

autovacuum (boolean)

控制服務(wù)器是否運(yùn)行自動(dòng)清理啟動(dòng)器后臺(tái)進(jìn)程。默認(rèn)為開啟, 不過要自動(dòng)清理正常工作還需要啟用track_counts。 該參數(shù)只能在postgresql.conf文件或服務(wù)器命令行中設(shè)置, 不過,通過更改表存儲(chǔ)參數(shù)可以為表禁用自動(dòng)清理。

注意即使該參數(shù)被禁用,系統(tǒng)也會(huì)在需要防止事務(wù)ID回卷時(shí)發(fā)起清理進(jìn)程。詳情請見第 24.1.5 節(jié)

log_autovacuum_min_duration (integer)

如果自動(dòng)清理運(yùn)行至少該值所指定的時(shí)間量,被自動(dòng)清理執(zhí)行的每一個(gè)動(dòng)作都會(huì)被日志記錄。 將該參數(shù)設(shè)置為0會(huì)記錄所有的自動(dòng)清理動(dòng)作。 -1(默認(rèn)值)將禁用對(duì)自動(dòng)清理動(dòng)作的記錄。 如果指定值時(shí)沒有單位,則以毫秒為單位。 例如,如果你將它設(shè)置為250ms,則所有運(yùn)行250ms或更長時(shí)間的 自動(dòng)清理和分析將被記錄。此外,當(dāng)該參數(shù)被設(shè)置為除-1外的任何值時(shí), 如果一個(gè)自動(dòng)清理動(dòng)作由于一個(gè)鎖沖突或者被并發(fā)刪除的關(guān)系而被跳過,將會(huì)為此記錄一個(gè)消息。 開啟這個(gè)參數(shù)對(duì)于追蹤自動(dòng)清理活動(dòng)非常有用。這個(gè)參數(shù)只能在 postgresql.conf文件或者服務(wù)器命令行中設(shè)置。但是可以通過更改表的存儲(chǔ) 參數(shù)為個(gè)別表覆蓋這個(gè)設(shè)置。

autovacuum_max_workers (integer)

指定能同時(shí)運(yùn)行的自動(dòng)清理進(jìn)程(除了自動(dòng)清理啟動(dòng)器之外)的最大數(shù)量。默認(rèn)值為3。該參數(shù)只能在服務(wù)器啟動(dòng)時(shí)設(shè)置。

autovacuum_naptime (integer)

指定自動(dòng)清理在任意給定數(shù)據(jù)庫上運(yùn)行的最小延遲。在每一輪中后臺(tái)進(jìn)程檢查數(shù)據(jù)庫并根據(jù)需要為數(shù)據(jù)庫中的表發(fā)出VACUUMANALYZE命令。 如果指定值時(shí)沒有單位,則以秒為單位。默認(rèn)值為1分鐘(1min)。該參數(shù)只能在postgresql.conf文件或在服務(wù)器命令行上設(shè)置。

autovacuum_vacuum_threshold (integer)

指定能在一個(gè)表上觸發(fā)VACUUM的被更新或被刪除元組的最小數(shù)量。默認(rèn)值為50個(gè)元組。該參數(shù)只能在postgresql.conf文件或在服務(wù)器命令中設(shè)置。但是對(duì)個(gè)別表可以通過修改表存儲(chǔ)參數(shù)來覆蓋該設(shè)置。

autovacuum_vacuum_insert_threshold (integer)

指定在任何一個(gè)表中觸發(fā) VACUUM所需要插入的元組數(shù)。默認(rèn)值為 1000 個(gè)元組。 如果指定了 -1,則autovacuum不會(huì)根據(jù)插入數(shù)量在任何表上觸發(fā) VACUUM操作。 此參數(shù)只能在postgresql.conf文件或服務(wù)器命令行中設(shè)置;但可以通過更改表存儲(chǔ)參數(shù)來覆蓋單個(gè)表的設(shè)置。

autovacuum_analyze_threshold (integer)

指定能在一個(gè)表上觸發(fā)ANALYZE的被插入、被更新或被刪除元組的最小數(shù)量。默認(rèn)值為50個(gè)元組。該參數(shù)只能在postgresql.conf文件或在服務(wù)器命令中設(shè)置。但是對(duì)個(gè)別表可以通過修改表存儲(chǔ)參數(shù)來覆蓋該設(shè)置。

autovacuum_vacuum_scale_factor (floating point)

指定一個(gè)表尺寸的分?jǐn)?shù),在決定是否觸發(fā)VACUUM時(shí)將它加到autovacuum_vacuum_threshold上。默認(rèn)值為0.2(表尺寸的20%)。該參數(shù)只能在postgresql.conf文件或在服務(wù)器命令中設(shè)置。但是對(duì)個(gè)別表可以通過修改表存儲(chǔ)參數(shù)來覆蓋該設(shè)置。

autovacuum_vacuum_insert_scale_factor (floating point)

指定一個(gè)要添加到autovacuum_vacuum_insert_threshold 中的表的大小的比例,在決定是否觸發(fā)VACUUM時(shí)。 默認(rèn)值為 0.2(表大小的 20%)。此參數(shù)只能在postgresql.conf文件或服務(wù)器命令行中設(shè)置;但可以通過更改表存儲(chǔ)參數(shù)來覆蓋單個(gè)表的設(shè)置。

autovacuum_analyze_scale_factor (floating point)

指定一個(gè)表尺寸的分?jǐn)?shù),在決定是否觸發(fā)ANALYZE時(shí)將它加到autovacuum_analyze_threshold上。默認(rèn)值為0.1(表尺寸的10%)。該參數(shù)只能在postgresql.conf文件或在服務(wù)器命令中設(shè)置。但是對(duì)個(gè)別表可以通過修改表存儲(chǔ)參數(shù)來覆蓋該設(shè)置。

autovacuum_freeze_max_age (integer)

指定在一個(gè)VACUUM操作被強(qiáng)制執(zhí)行來防止表中事務(wù)ID回卷之前,一個(gè)表的pg_class.relfrozenxid域能保持的最大年齡(事務(wù)的)。注意即便自動(dòng)清理被禁用,系統(tǒng)也將發(fā)起自動(dòng)清理進(jìn)程來阻止回卷。

清理也允許從pg_xact子目錄中移除舊文件,這也是為什么默認(rèn)值被設(shè)置為較低的2億事務(wù)。該參數(shù)只能在服務(wù)器啟動(dòng)時(shí)設(shè)置,但是對(duì)于個(gè)別表可以通過修改表存儲(chǔ)參數(shù)來降低該設(shè)置。詳見第 24.1.5 節(jié)。

autovacuum_multixact_freeze_max_age (integer)

指定在一個(gè)VACUUM操作被強(qiáng)制執(zhí)行來防止表中多事務(wù)ID回卷之前,一個(gè)表的pg_class.relminmxid域能保持的最大年齡(多事務(wù)的)。注意即便自動(dòng)清理被禁用,系統(tǒng)也將發(fā)起自動(dòng)清理進(jìn)程來阻止回卷。

清理多事務(wù)也允許從pg_multixact/memberspg_multixact/offsets子目錄中移除舊文件,這也是為什么默認(rèn)值被設(shè)置為較低的4億事務(wù)。該參數(shù)只能在服務(wù)器啟動(dòng)時(shí)設(shè)置,但是對(duì)于個(gè)別表可以通過修改表存儲(chǔ)參數(shù)來降低該設(shè)置。詳見第 24.1.5.1 節(jié)

autovacuum_vacuum_cost_delay (floating point)

指定用于自動(dòng)VACUUM操作中的代價(jià)延遲值。如果指定-1,則使用vacuum_cost_delay值。 如果指定值時(shí)沒有單位,則以毫秒為單位。默認(rèn)值為2毫秒。該參數(shù)只能在postgresql.conf文件或在服務(wù)器命令中設(shè)置。但是對(duì)個(gè)別表可以通過修改表存儲(chǔ)參數(shù)來覆蓋該設(shè)置。

autovacuum_vacuum_cost_limit (integer)

指定用于自動(dòng)VACUUM操作中的代價(jià)限制值。如果指定-1(默認(rèn)值),則使用vacuum_cost_limit值。注意該值被按比例地分配到運(yùn)行中的自動(dòng)清理工作者上(如果有多個(gè)),因此每一個(gè)工作者的限制值之和不會(huì)超過這個(gè)變量中的值。該參數(shù)只能在postgresql.conf文件或在服務(wù)器命令中設(shè)置。但是對(duì)個(gè)別表可以通過修改表存儲(chǔ)參數(shù)來覆蓋該設(shè)置。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)