18.10. 自动清理

这些设置控制autovacuum特性的行为。详情请参考 Section 23.1.6。注意很多这些设置可以被针对每个表 的设置所覆盖,参见Storage Parameters

autovacuum (boolean)

控制服务器是否运行自动清理启动器后台进程。默认为开启, 不过要自动清理正常工作还需要启用track_counts。 该参数只能在lightdb.conf文件或服务器命令行中设置, 不过,通过更改表存储参数可以为表禁用自动清理。

注意即使该参数被禁用,系统也会在需要防止事务ID回卷时发起清理进程。详情请见Section 23.1.5

log_autovacuum_min_duration (integer)

如果autovacuum执行的每个操作至少运行了指定的时间,该操作会被记录。 设置这个为零记录所有autovacuum操作。 -1(默认的)禁用日志记录autovacuum操作。 如果指定此值时不带单位,则以毫秒为单位。 例如,如果将其设置为250ms,那么所有运行250毫秒或更长时间的自动vacuums和分析都将被记录。 此外,当此参数设置为-1以外的任何值时,如果由于锁冲突或并发删除关系而跳过autovacuum操作,则会记录一条消息。 启用此参数有助于跟踪autovacuum活动。 该参数只能在lightdb.conf文件或在服务器命令行中设置;但是可以通过更改表存储参数来覆盖单独表的设置。

autovacuum_max_workers (integer)

指定能同时运行的自动清理进程(除了自动清理启动器之外)的最大数量。默认值为3。该参数只能在服务器启动时设置。

autovacuum_naptime (integer)

指定自动清理在任意给定数据库上运行的最小延迟。在每一轮中后台进程检查数据库并根据需要为数据库中的表发出VACUUMANALYZE命令。 如果指定值时没有单位,则以秒为单位。默认值为1分钟(1min)。该参数只能在lightdb.conf文件或在服务器命令行上设置。

autovacuum_vacuum_threshold (integer)

指定能在一个表上触发VACUUM的被更新或被删除元组的最小数量。默认值为50个元组。该参数只能在lightdb.conf文件或在服务器命令中设置。但是对个别表可以通过修改表存储参数来覆盖该设置。

autovacuum_vacuum_insert_threshold (integer)

指定在任何一个表中触发 VACUUM所需要插入的元组数。默认值为 1000 个元组。 如果指定了 -1,则autovacuum不会根据插入数量在任何表上触发 VACUUM操作。 此参数只能在lightdb.conf文件或服务器命令行中设置;但可以通过更改表存储参数来覆盖单个表的设置。

autovacuum_analyze_threshold (integer)

指定能在一个表上触发ANALYZE的被插入、被更新或被删除元组的最小数量。默认值为50个元组。该参数只能在lightdb.conf文件或在服务器命令中设置。但是对个别表可以通过修改表存储参数来覆盖该设置。

autovacuum_vacuum_scale_factor (floating point)

指定一个表尺寸的分数,在决定是否触发VACUUM时将它加到autovacuum_vacuum_threshold上。默认值为0.2(表尺寸的20%)。该参数只能在lightdb.conf文件或在服务器命令中设置。但是对个别表可以通过修改表存储参数来覆盖该设置。

autovacuum_vacuum_insert_scale_factor (floating point)

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

autovacuum_analyze_scale_factor (floating point)

指定一个表尺寸的分数,在决定是否触发ANALYZE时将它加到autovacuum_analyze_threshold上。默认值为0.1(表尺寸的10%)。该参数只能在lightdb.conf文件或在服务器命令中设置。但是对个别表可以通过修改表存储参数来覆盖该设置。

autovacuum_freeze_max_age (integer)

指定在一个VACUUM操作被强制执行来防止表中事务ID回卷之前,一个表的pg_class.relfrozenxid域能保持的最大年龄(事务的)。注意即便自动清理被禁用,系统也将发起自动清理进程来阻止回卷。

清理也允许从lt_xact子目录中移除旧文件,这也是为什么默认值被设置为较低的2亿事务。该参数只能在服务器启动时设置,但是对于个别表可以通过修改表存储参数来降低该设置。详见Section 23.1.5

autovacuum_multixact_freeze_max_age (integer)

指定在一个VACUUM操作被强制执行来防止表中多事务ID回卷之前,一个表的pg_class.relminmxid域能保持的最大年龄(多事务的)。注意即便自动清理被禁用,系统也将发起自动清理进程来阻止回卷。

清理多事务也允许从lt_multixact/memberslt_multixact/offsets子目录中移除旧文件,这也是为什么默认值被设置为较低的4亿事务。该参数只能在服务器启动时设置,但是对于个别表可以通过修改表存储参数来降低该设置。详见Section 23.1.5.1

autovacuum_vacuum_cost_delay (floating point)

指定用于自动VACUUM操作中的代价延迟值。如果指定-1,则使用vacuum_cost_delay值。 如果指定值时没有单位,则以毫秒为单位。默认值为2毫秒。该参数只能在lightdb.conf文件或在服务器命令中设置。但是对个别表可以通过修改表存储参数来覆盖该设置。

autovacuum_vacuum_cost_limit (integer)

指定用于自动VACUUM操作中的代价限制值。如果指定-1(默认值),则使用vacuum_cost_limit值。注意该值被按比例地分配到运行中的自动清理工作者上(如果有多个),因此每一个工作者的限制值之和不会超过这个变量中的值。该参数只能在lightdb.conf文件或在服务器命令中设置。但是对个别表可以通过修改表存储参数来覆盖该设置。