受支持版本: 17 / 16 / 15 / 14

19.14. 自动清理 #

本节控制自动清理后台进程的行为,以及它在何时触发 VACUUMANALYZE。 除非你有明确理由,否则通常应保持默认值。

autovacuum #

控制服务器是否运行自动清理启动进程。默认值为开启;不过要使自动清理真正生效,还必须启用 track_counts。此参数只能在 postgresql.conf 文件中或服务器命令行上设置; 但可以通过调整表存储参数,对单个表禁用自动清理。

注意,即使这个参数被关闭,系统仍会在必要时启动自动清理进程,以防止事务 ID 回卷。更多信息请参见 Section 24.1.5

autovacuum_max_workers #

指定任意时刻可运行的自动清理进程最大数目,不包括自动清理启动进程。默认值是 3。 此参数只能在服务器启动时设置。

autovacuum_naptime #

指定对任一数据库两次自动清理运行之间的最小延迟。每一轮中,守护进程都会检查该数据库, 并按需要对其中的表执行 VACUUMANALYZE。如果指定值没有单位,则按秒计算。 默认值是一分钟(1min)。此参数只能在 postgresql.conf 中或服务器命令行上设置。

autovacuum_vacuum_threshold #

指定触发单个表执行 VACUUM 所需的最少已更新或已删除元组数。默认值是 50 行。 此参数只能在 postgresql.conf 中或服务器命令行上设置;但可以通过更改表存储参数覆盖单个表的设置。

autovacuum_vacuum_insert_threshold #

指定触发单个表执行 VACUUM 所需的最少插入元组数。默认值是 1000 行。 如果设为 -1,则自动清理不会基于插入数量触发 VACUUM。 此参数只能在 postgresql.conf 中或服务器命令行上设置;但可以通过更改表存储参数覆盖单个表的设置。

autovacuum_analyze_threshold #

指定触发单个表执行 ANALYZE 所需的最少插入、更新或删除元组数。默认值是 50 行。 此参数只能在 postgresql.conf 中或服务器命令行上设置;但可以通过更改表存储参数覆盖单个表的设置。

autovacuum_vacuum_scale_factor #

指定在判断是否触发 VACUUM 时,要加到 autovacuum_vacuum_threshold 上的表大小比例。默认值为 0.2,即表大小的 20%。 此参数只能在 postgresql.conf 中或服务器命令行上设置;但可以通过更改表存储参数覆盖单个表的设置。

autovacuum_vacuum_insert_scale_factor #

指定在判断是否触发 VACUUM 时,要加到 autovacuum_vacuum_insert_threshold 上的表大小比例。默认值为 0.2,即表大小的 20%。 此参数只能在 postgresql.conf 中或服务器命令行上设置;但可以通过更改表存储参数覆盖单个表的设置。

autovacuum_analyze_scale_factor #

指定在判断是否触发 ANALYZE 时,要加到 autovacuum_analyze_threshold 上的表大小比例。默认值为 0.1,即表大小的 10%。 此参数只能在 postgresql.conf 中或服务器命令行上设置;但可以通过更改表存储参数覆盖单个表的设置。

autovacuum_freeze_max_age #

指定表的 pg_class.relfrozenxid 字段在被强制执行 VACUUM 之前可达到的最大事务年龄,以防止表内事务 ID 回卷。请注意, 即使自动清理被关闭,系统仍会启动自动清理进程来防止回卷。

清理还允许移除 pg_xact 子目录中的旧文件,因此默认值是相对较低的 2 亿事务。 此参数只能在服务器启动时设置,但可以通过更改表存储参数为单个表降低该值。更多信息见 Section 24.1.5

autovacuum_multixact_freeze_max_age #

指定表的 pg_class.relminmxid 字段在被强制执行 VACUUM 之前可达到的最大 multixact 年龄,以防止表内 multixact ID 回卷。 请注意,即使自动清理被关闭,系统仍会启动自动清理进程来防止回卷。

对 multixact 的清理还允许移除 pg_multixact/memberspg_multixact/offsets 子目录中的旧文件,因此默认值是相对较低的 4 亿 multixact。 此参数只能在服务器启动时设置,但可以通过更改表存储参数为单个表降低该值。更多信息见 Section 24.1.5.1

autovacuum_vacuum_cost_delay #

指定自动 VACUUM 操作使用的成本延迟值。若设为 -1,则使用常规的 vacuum_cost_delay 值。如果指定值没有单位,则按毫秒计算。默认值为 2 毫秒。 此参数只能在 postgresql.conf 中或服务器命令行上设置;但可以通过更改表存储参数覆盖单个表的设置。

autovacuum_vacuum_cost_limit #

指定自动 VACUUM 操作使用的成本上限值。若设为 -1(默认值),则使用常规的 vacuum_cost_limit 值。请注意,如果同时运行多个自动清理工作者,该值会按比例分配, 使每个工作者的上限之和不超过本变量的值。此参数只能在 postgresql.conf 中或服务器命令行上设置; 但可以通过更改表存储参数覆盖单个表的设置。

提交更正

如果您发现文档中有不正确的内容、与您使用特定功能的经验不符或需要进一步说明,请使用此表单来报告文档问题。