18.9. 自动清理 #
这些设置控制autovacuum特性的行为。更多信息见第 23.1.4 节。
autovacuum(boolean) #控制服务器是否运行自动清理启动器后台进程。默认为开启,不过要使自动清理正常工作,还需要启用track_counts。该参数只能在
postgresql.conf文件或服务器命令行中设置,不过,通过更改表存储参数可以为表禁用自动清理。注意即使该参数被禁用,系统也会在需要防止事务ID回卷时发起自动清理进程。详情请见第 23.1.3 节。
log_autovacuum_min_duration(integer) #当自动清理执行的操作运行时间至少达到指定毫秒数时,就会记录该操作。将此设置为零会记录所有自动清理操作。负一(默认值)会禁用记录自动清理操作。例如,如果将其设置为
250ms,则所有运行时间为 250ms 或更长的自动清理和分析都将被记录。启用此参数可帮助跟踪自动清理活动。此设置只能在postgresql.conf文件中或服务器命令行上设置。autovacuum_max_workers(integer) #指定任一时刻可能运行的自动清理进程(自动清理启动器除外)的最大数量。默认值为三个。这个参数只能在
postgresql.conf文件中或服务器命令行上设置。autovacuum_naptime(integer) #指定自动清理在任意给定数据库上各次运行之间的最小间隔。在每一轮中后台进程检查数据库并根据需要为数据库中的表发出
VACUUM和ANALYZE命令。延迟以秒为单位。默认值为1分钟(1min)。该参数只能在postgresql.conf文件或在服务器命令行上设置。autovacuum_vacuum_threshold(integer) #指定能在一个表上触发
VACUUM的被更新或被删除元组的最小数量。默认值为50个元组。该参数只能在postgresql.conf文件或在服务器命令行上设置。对个别表,可以通过在pg_autovacuum中的条目来覆盖该设置。autovacuum_analyze_threshold(integer) #指定能在一个表上触发
ANALYZE的被插入、被更新或被删除元组的最小数量。默认值为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_analyze_threshold上。默认值为0.1(表尺寸的10%)。该参数只能在postgresql.conf文件或在服务器命令行上设置。对个别表,可以通过在pg_autovacuum中的条目来覆盖该设置。autovacuum_freeze_max_age(integer) #指定在一个表上强制执行
VACUUM以防止表内事务 ID 回卷之前,该表的pg_class.relfrozenxid域能达到的最大年龄(以事务计)。注意,即便自动清理在其他情况下被禁用,系统也会发起自动清理进程来防止回卷。默认值是 2 亿个事务。该参数只能在服务器启动时设置,但对于个别表,可以通过在pg_autovacuum中的条目来减小该值。更多信息见第 23.1.3 节。autovacuum_vacuum_cost_delay(integer) #指定用于自动
VACUUM操作中的代价延迟值。如果指定-1,则使用常规的vacuum_cost_delay值。默认值为 20 毫秒。此参数只能在postgresql.conf文件中或在服务器命令行上设置。对个别表,可以通过在pg_autovacuum中的条目来覆盖该设置。autovacuum_vacuum_cost_limit(integer) #指定用于自动
VACUUM操作中的代价限制值。如果指定-1(默认值),则使用常规的vacuum_cost_limit值。注意该值被按比例地分配到运行中的自动清理工作进程上(如果有多个),因此每一个工作进程的限制值之和不会超过这个变量中的值。此参数只能在postgresql.conf文件中或在服务器命令行上设置。对个别表,可以通过在pg_autovacuum中的条目来覆盖该设置。