pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
pg_autovacuum #目录pg_autovacuum存放自动清理守护进程的可选逐关系配置参数。如果某个特定关系在这里有条目,则给定的参数将用于对该表做自动清理。如果没有条目,将使用系统范围的默认值。关于自动清理守护进程的更多信息,见第 23.1.4 节。
pg_autovacuum很可能会在未来版本中消失,这些信息将改为保存在pg_class.reloptions条目中。
表 44.10. pg_autovacuum列
| 名字 | 类型 | 引用 | 描述 |
|---|---|---|---|
vacrelid |
oid |
|
此条目所属的表 |
enabled |
bool |
如果为假,除了防止事务 ID 回卷之外,不会对该表做自动清理 | |
vac_base_thresh |
integer |
触发清理之前所需的最小已修改元组数 | |
vac_scale_factor |
float4 |
乘以reltuples后加到vac_base_thresh上的系数 |
|
anl_base_thresh |
integer |
触发分析之前所需的最小已修改元组数 | |
anl_scale_factor |
float4 |
乘以reltuples后加到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参数 |
当已更新或已删除元组的数量超过vac_base_thresh加上vac_scale_factor乘以该关系当前估计的活元组数时,自动清理守护进程将对特定的表发起一次VACUUM操作。类似地,当已插入、已更新或已删除元组的数量超过anl_base_thresh加上anl_scale_factor乘以该关系当前估计的活元组数时,它将发起一次ANALYZE操作。
此外,当表的pg_class.relfrozenxid字段的年龄超过freeze_max_age个事务时,无论该表是否被更改过,甚至即使它的pg_autovacuum.enabled被设置为false,自动清理守护进程也会执行一次VACUUM操作以防止事务 ID 回卷。即使自动清理在其他情况下被禁用,系统也会发起自动清理来执行这样的VACUUM。关于回卷预防的更多信息,见第 23.1.3 节。
任何数值字段都可以包含-1(或者任何负值),表示该特定值应使用系统范围的默认值。注意,vac_cost_delay变量的默认值继承自autovacuum_vacuum_cost_delay配置参数,或者在前者被设置为负值时继承自vacuum_cost_delay。同样的规则也适用于vac_cost_limit。此外,自动清理会忽略把逐表的freeze_max_age设置为大于系统范围设置值的尝试(只能设置得更小),而freeze_min_age的值将被限制为系统范围autovacuum_freeze_max_age设置值的一半。注意,虽然可以把freeze_max_age设置得非常小甚至为零,这通常是不明智的,因为这会迫使频繁清理。
译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。