↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

不受支持的版本: 8.3 / 8.2 / 8.1
历史版本PostgreSQL 8.3 已于 2013 年 2 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本手册首页。

44.10. pg_autovacuum #

目录pg_autovacuum存放自动清理守护进程的可选逐关系配置参数。如果某个特定关系在这里有条目,则给定的参数将用于对该表做自动清理。如果没有条目,将使用系统范围的默认值。关于自动清理守护进程的更多信息,见第 23.1.4 节。

注意

pg_autovacuum很可能会在未来版本中消失,这些信息将改为保存在pg_class.reloptions条目中。

表 44.10. pg_autovacuum列

名字 类型 引用 描述
vacrelid oid pg_class.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 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。