自动清理(AUTOMATIC VACUUMING)类别参数

本文档介绍了系统配置参数中 自动清理类别的相关参数。

注意!
为确保系统稳定与安全,请务必谨慎手动修改相关参数

autovacuum


控制服务器是否运行自动清理启动器后台进程。

  • 此参数默认禁用,不过要自动清理正常工作还需要启用 track_counts,如果 track_counts 设置为 offautovacuum 不会单独生效。
  • 通过更改表存储参数可以为表禁用自动清理。
  • 注意:即使该参数被禁用,系统也会在需要防止事务 ID 回卷时发起清理进程。
数据类型 默认值 设置分类
boolean off master;system;reload

autovacuum_analyze_scale_factor


指定一个表尺寸的分数,在决定是否触发 ANALYZE 时将它加到 autovacuum_analyze_threshold 上。

  • 默认值为 0.1(表尺寸的 10%)。但是对个别表可以通过修改表存储参数来覆盖该设置。
数据类型 默认值 取值范围 设置分类
floating point 0.1 0.0 ~ 100.0 segments;session;reload

autovacuum_analyze_threshold


指定能在一个表上触发 ANALYZE 的被插入、被更新或被删除元组的最小数量。

  • 对个别表可以通过修改表存储参数来覆盖该设置。
数据类型 默认值 取值范围 设置分类
int 50 0 ~ INT_MAX segments;system;reload

autovacuum_freeze_max_age


指定在一个 VACUUM 操作被强制执行来防止表中事务 ID 回卷之前,一个表的 pg_class.relfrozenxid 域能保持的最大年龄(事务的)。

  • 注意:即便自动清理被禁用,系统也将发起自动清理进程来阻止回卷。
  • 清理也允许从 pg_xact 子目录中移除旧文件,这也是为什么默认值被设置为相对较低的 2 亿事务。
  • 该参数只能在服务器启动时设置,但是对于个别表可以通过修改表存储参数来降低该设置。
数据类型 默认值 取值范围 设置分类
int 200000000 100000 ~ 200000000 segments;system;restart

autovacuum_max_workers


指定能同时运行的自动清理进程(除了自动清理启动器之外)的最大数量。

  • 该参数只能在服务器启动时设置。
数据类型 默认值 取值范围 设置分类
int 3 1 ~ 262143 segments;system;restart

autovacuum_multixact_freeze_max_age


指定在一个 VACUUM 操作被强制执行来防止表中多事务 ID 回卷之前,一个表的 pg_class.relminmxid 域能保持的最大年龄(多事务的)。

  • 注意:即便自动清理被禁用,系统也将发起自动清理进程来阻止回卷。
  • 清理多事务也允许从 pg_multixact/memberspg_multixact/offsets 子目录中移除旧文件,这也是为什么默认值被设置为相对较低的 4 亿事务。
  • 该参数只能在服务器启动时设置,但是对于个别表可以通过修改表存储参数来降低该设置。
数据类型 默认值 取值范围 设置分类
int 400000000 10000 ~ 2000000000 segments;system;restart

autovacuum_naptime


autovacuum 参数开启,此参数可指定自动清理在任意给定数据库上运行的最小延迟时间(秒)。

  • 在每一轮清理中,后台进程都会检查数据库,并根据系统目录与辅助表的需要为数据库中的表发出 VACUUMANALYZE 命令。
数据类型 默认值 取值范围 设置分类
int 60 1 ~ (INT_MAX/1000) master;system;restart

autovacuum_vacuum_cost_delay


指定用于自动 VACUUM 操作中的代价延迟值(毫秒)。

  • 如果指定 -1,则使用 vacuum_cost_delay 值 。
  • 如果指定值时没有单位,则以毫秒为单位。默认值为 2毫秒
  • 对个别表可以通过修改表存储参数来覆盖该设置。
数据类型 默认值 取值范围 设置分类
floating point 2 -1 ~ 100 segments;system;reload

autovacuum_vacuum_cost_limit


指定用于自动 VACUUM 操作中的代价限制值。

  • 如果指定 -1(默认值),则使用 vacuum_cost_limit 值。
  • 注意:该值被按比例地分配到运行中的自动清理工作者上(如果有多个),因此每一个工作者的限制值之和不会超过这个变量中的值。
  • 对个别表可以通过修改表存储参数来覆盖该设置。
数据类型 默认值 取值范围 设置分类
int -1 -1 ~ 10000 segments;system;reload

autovacuum_vacuum_scale_factor


指定一个表尺寸的分数,在决定是否触发 VACUUM 时将它加到 autovacuum_vacuum_threshold 上。

  • 默认值为 0.2(表尺寸的 20%)。
  • 对个别表可以通过修改表存储参数来覆盖该设置。
数据类型 默认值 取值范围 设置分类
floating point 0.2 0.0 ~ 1.0 segments;system;reload

autovacuum_vacuum_threshold


指定能在一个表上触发 VACUUM 的被更新或被删除元组的最小数量。

  • 对个别表可以通过修改表存储参数来覆盖该设置。
数据类型 默认值 取值范围 设置分类
int 50 1 ~ INT_MAX segments;system;reload

log_autovacuum_min_duration


如果自动清理操作至少运行该参数值所指定的时间,那么自动清理执行的每一个动作都会被日志记录。

  • 将该参数设置为 0 会记录所有的自动清理动作。
  • -1(默认值)将禁用对自动清理动作的记录。
  • 例如,如果你将它设置为 250ms,则所有运行 250ms 或更长时间的自动清理和分析将被记录。
  • 此外,当该参数被设置为除 -1 外的任何值时,如果一个自动清理动作由于一个锁冲突或者被并发删除的关系而被跳过,将会为此记录一个消息。
  • 开启这个参数对于追踪自动清理活动非常有用。
  • 可以通过更改表的存储参数为个别表覆盖这个设置。
数据类型 默认值 取值范围 设置分类
int -1 -1 ~ INT_MAX segments;system;reload


track_counts


控制收集数据库活动的统计数据。

数据类型 默认值 设置分类
boolean true master;session;reload;superuser