autovacuum (boolean)
控制服务器是否应该启动 autovacuum 子进程。缺省是关闭的。要想启动这个进程,
stats_start_collector 和 stats_row_level 也必须是打开的。
这个选项只能在服务器启动的时候或者在 postgresql.conf 文件里设置。
#建议不要太高频率,否则会因为vacuum产生较多的XLOG
autovacuum_naptime (integer)
声明 autovacuum 子进程的活跃周期之间的延迟。在每次运行的周期里,
子进程都会检查一个数据库,并根据需要为该数据库的表发出 VACUUM 和 ANALYZE 命令。
这个延迟是以秒计的,缺省为 60 。这个选项只能在服务器启动的时候或者在 postgresql.conf
文件里设置。
#触发vacuum条件1:
#表上(update,delete 记录) >= autovacuum_vacuum_scale_factor* reltuples(表上记录数) +autovacuum_vacuum_threshold
(1)autovacuum_vacuum_threshold清理常数
(2)autovacuum_vacuum_scale_factor 清理的缩放系数
autovacuum_vacuum_threshold (integer) #
声明在任何表里触发 VACUUM 所需最小的行更新或删除数量。缺省是 500 。
这个选项只能在服务器启动的时候或者在 postgresql.conf 文件里设置。
此处的设置可以针对每个表被 pg_autovacuum 表中的项改写。
autovacuum_vacuum_scale_factor (floating point)
声明在判断是否触发一个 VACUUM 时增加到 autovacuum_vacuum_threshold
参数里面的表尺寸的分数。缺省是 0.2(20%)。这个选项只能在
服务器启动的时候或者在 postgresql.conf 文件里设置。此处的设置可以
针对每个表被 pg_autovacuum 表中的项改写。
#触发vacuum条件2:
#当表表上事务的最大年龄配置参数autovacuum_freeze_max_age,默认为2亿,达到这个阀值将触发 autovacuum进程
autovacuum_freeze_max_age (integer)
指定表的 pg_class在事务中的最大寿命。relfrozenxid 字段能够在
强制 VACUUM 操作以防止事务 ID在表内循环重复之前完成。需要注意的是
,即使 autovacuum 被禁止系统也会调用 autovacuum 进程来防止循环
重复。默认值是 200000000(2亿)。该参数只能在服务器启动时设置,
但是此处的设置可以针对每个表被 pg_autovacuum 表中的项减少。
#触发autovacuum的analyze条件:
#表上(插入、更新、删除数量)>=autovacuum_analyze_threshold+autovacuum_analyze_scale_factor* reltuples(表上记录数)
autovacuum_analyze_threshold (integer)
声明在任何表里触发 ANALYZE 所需最小的行插入、更新、删除数量。缺省是 250 。
这个选项只能在服务器启动的时候或者在 postgresql.conf 文件里设置。
此处的设置可以针对每个表被 pg_autovacuum 表中的项改写。
autovacuum_analyze_scale_factor (floating point)
声明在判断是否触发一个 ANALYZE 时增加到 autovacuum_analyze_threshold
参数里面的表尺寸的分数。缺省是 0.1(10%)。这个选项只能在服务器启动的时
候或者在 postgresql.conf 文件里设置。此处的设置可以针对每个表被 pg_autovacuum 表中的项改写。
#vacuum的延迟清理,如果为-1则默认使用vacuum_cost_delay
autovacuum_vacuum_cost_delay (integer)
声明将在自动 VACUUM 操作里使用的开销延迟数值。-1(缺省值)将使用普通
的 vacuum_cost_delay 数值。这个选项只能在服务器启动的时候或者在
postgresql.conf 文件里设置。此处的设置可以针对每个表被 pg_autovacuum 表中的项改写。
#vacuum的延迟清理,如果为-1则默认使用vacuum_cost_limit
autovacuum_vacuum_cost_limit (integer)
声明将在自动 VACUUM 操作里使用的开销限制数值。-1(缺省值)将使用普通的
vacuum_cost_limit 数值。这个选项只能在服务器启动的时候或者在
postgresql.conf 文件里设置。此处的设置可以针对每个表被 pg_autovacuum 表中的项改写。
autovacuum_work_mem
声明自动vacuum的内存设置,如果为设置,则等于maintenance_work_mem。
内存被用于记录垃圾tupleid,vacuum进程在进行表扫描时,当扫描到的垃圾
记录ID占满了整个内存(autovacuum_work_mem或maintenance_work_mem),
那么会停止扫描表,开始INDEX的扫描。扫描INDEX时,清理索引中的哪些tuple,
实际上是从刚才内存中记录的这些tupleid来进行匹配。当所有索引都扫描并清理了一遍后,
继续从刚才的位点开始扫描表