pg_autovacuum 为 autovacuum 守护进程存储针对每个关系的配置参数,给出的参数将用于自动清理该表。如果没有提供条目,那么使用系统范围的缺省。关于 autovacuum 的更多信息,参见节22.1.4。
表43-10. pg_autovacuum 字段
名字 | 类型 | 引用 | 描述 |
---|---|---|---|
vacrelid | oid | pg_class.oid | 此条记录用于的表 |
enabled | bool | 如果为假,该表从不会被自动清理 | |
vac_base_thresh | integer | 清理前修改的最少的行数目 | |
vac_scale_factor | float4 | 追加到 vac_base_thresh 上的行的倍数 | |
anl_base_thresh | integer | 分析之前修改的最少的行数目 | |
anl_scale_factor | float4 | 追加到 anl_base_thresh 上的行的倍数 | |
vac_cost_delay | integer | 自定义的 vacuum_cost_delay 参数 | |
vac_cost_limit | integer | 自定义的 vacuum_cost_limit 参数 | |
freeze_min_age | integer | 自定义的 vacuum_freeze_min_age 参数 | |
freeze_max_age | integer | 自定义的 autovacuum_freeze_max_age 参数 |
autovacuum 守护进程在某个表上行的更新或者删除数目超过 vac_base_thresh 加上 vac_scale_factor 乘以关系(表)中当前的有效行的估计数之后,将对该表发起一次 VACUUM 操作。类似,如果某表上插入,更新或者删除的行数目超过了 anl_base_thresh 加上 anl_scale_factor 乘以关系(表)中当前有效行的估计数之后,将对该表发起一次 ANALYZE 操作。
同样,如果表的 pg_class.relfrozenxid 字段超过 freeze_max_age 次事务,那么无论该表是否被修改,autovacuum 都会执行 VACUUM 操作以避免事务 ID 重叠。即使在 autovacuum 被禁用的情况下,系统也会调用 autovacuum 来执行 VACUUM 。参见节22.1.3获取更多信息。
上述所有数字字段都可以包含 -1 或者是任何负数,表示在这个数值上使用系统范围的缺省值。注意,vac_cost_delay 变量从配置参数 autovacuum_vacuum_cost_delay 继承缺省数值,如果前面这个参数设置为负值,则从 vacuum_cost_delay 继承缺省值。vac_cost_limit 也一样。同样,autovacuum 将忽略企图针对单个表设置大于系统全局值的 freeze_max_age 值(该值仅允许比全局值更小),同时,freeze_min_age value 将被限制为系统全局 autovacuum_freeze_max_age 值的一半之内。