这些参数控制清理的行为。有关清理的目的和职责的更多信息,请参阅Section 24.1。
这些设置控制autovacuum特性的行为。详情请参考 Section 24.1.6。注意很多这些设置可以被针对每个表 的设置所覆盖,参见Storage Parameters。
autovacuum (boolean) #控制服务器是否运行自动清理启动器后台进程。默认为开启, 不过要自动清理正常工作还需要启用track_counts。 该参数只能在postgresql.conf文件或服务器命令行中设置, 不过,通过更改表存储参数可以为表禁用自动清理。
注意即使该参数被禁用,系统也会在需要防止事务ID回卷时发起清理进程。详情请见Section 24.1.5。
autovacuum_worker_slots (integer) #指定为 autovacuum 工作进程保留的后端槽位数。默认通常是 16 个槽位,但如果内核设置不支持(如 initdb 期间所判定),则可能少于此数。 该参数只能在服务器启动时设置。
更改该值时,也应考虑调整autovacuum_max_workers。
autovacuum_max_workers (integer) #指定能同时运行的自动清理进程(除了自动清理启动器之外)的最大数量。默认值为3。该参数只能在服务器启动时设置。
请注意,如果该值被设置得高于autovacuum_worker_slots,将不会产生任何效果,因为 autovacuum 工作进程是从该设置建立的槽位池中获取的。
autovacuum_naptime (integer) #指定自动清理在任意给定数据库上运行的最小延迟。在每一轮中后台进程检查数据库并根据需要为数据库中的表发出VACUUM和ANALYZE命令。 如果指定值时没有单位,则以秒为单位。默认值为1分钟(1min)。该参数只能在postgresql.conf文件或在服务器命令行上设置。
autovacuum_vacuum_max_threshold (integer) #指定在任意一个表上触发VACUUM所需更新或删除元组数的最大值,也就是对 autovacuum_vacuum_threshold和 autovacuum_vacuum_scale_factor计算结果所施加的上限。 默认值为 100,000,000 个元组。如果指定为-1,autovacuum 将不会对触发 VACUUM所需的更新或删除元组数强制施加最大值。 该参数只能在postgresql.conf文件中或服务器命令行上设置;但可以通过更改表存储参数覆盖单个表的该设置。
autovacuum_vacuum_threshold (integer) #指定能在一个表上触发VACUUM的被更新或被删除元组的最小数量。默认值为50个元组。该参数只能在postgresql.conf文件或在服务器命令中设置。但是对个别表可以通过修改表存储参数来覆盖该设置。
autovacuum_vacuum_insert_threshold (integer) #指定在任何一个表中触发 VACUUM所需要插入的元组数。默认值为 1000 个元组。 如果指定了 -1,则autovacuum不会根据插入数量在任何表上触发 VACUUM操作。 此参数只能在postgresql.conf文件或服务器命令行中设置;但可以通过更改表存储参数来覆盖单个表的设置。
autovacuum_analyze_threshold (integer) #指定能在一个表上触发ANALYZE的被插入、被更新或被删除元组的最小数量。默认值为50个元组。该参数只能在postgresql.conf文件或在服务器命令中设置。但是对个别表可以通过修改表存储参数来覆盖该设置。
autovacuum_vacuum_scale_factor (floating point) #指定一个表尺寸的分数,在决定是否触发VACUUM时将它加到autovacuum_vacuum_threshold上。默认值为0.2(表尺寸的20%)。该参数只能在postgresql.conf文件或在服务器命令中设置。但是对个别表可以通过修改表存储参数来覆盖该设置。
autovacuum_vacuum_insert_scale_factor (floating point) #指定一个要添加到autovacuum_vacuum_insert_threshold 中的表的大小的比例,在决定是否触发VACUUM时。 默认值为 0.2(表大小的 20%)。此参数只能在postgresql.conf文件或服务器命令行中设置;但可以通过更改表存储参数来覆盖单个表的设置。
autovacuum_analyze_scale_factor (floating point) #指定一个表尺寸的分数,在决定是否触发ANALYZE时将它加到autovacuum_analyze_threshold上。默认值为0.1(表尺寸的10%)。该参数只能在postgresql.conf文件或在服务器命令中设置。但是对个别表可以通过修改表存储参数来覆盖该设置。
autovacuum_freeze_max_age (integer) #指定在一个VACUUM操作被强制执行来防止表中事务ID回卷之前,一个表的pg_class.relfrozenxid域能保持的最大年龄(事务的)。注意即便自动清理被禁用,系统也将发起自动清理进程来阻止回卷。
清理也允许从pg_xact子目录中移除旧文件,这也是为什么默认值被设置为较低的2亿事务。该参数只能在服务器启动时设置,但是对于个别表可以通过修改表存储参数来降低该设置。详见Section 24.1.5。
autovacuum_multixact_freeze_max_age (integer) #指定在一个VACUUM操作被强制执行来防止表中多事务ID回卷之前,一个表的pg_class.relminmxid域能保持的最大年龄(多事务的)。注意即便自动清理被禁用,系统也将发起自动清理进程来阻止回卷。
清理多事务也允许从pg_multixact/members和pg_multixact/offsets子目录中移除旧文件,这也是为什么默认值被设置为较低的4亿事务。该参数只能在服务器启动时设置,但是对于个别表可以通过修改表存储参数来降低该设置。详见Section 24.1.5.1。
autovacuum_vacuum_cost_delay (floating point) #指定用于自动VACUUM操作中的代价延迟值。如果指定-1,则使用vacuum_cost_delay值。 如果指定值时没有单位,则以毫秒为单位。默认值为2毫秒。该参数只能在postgresql.conf文件或在服务器命令中设置。但是对个别表可以通过修改表存储参数来覆盖该设置。
autovacuum_vacuum_cost_limit (integer) #指定用于自动VACUUM操作中的代价限制值。如果指定-1(默认值),则使用vacuum_cost_limit值。注意该值被按比例地分配到运行中的自动清理工作者上(如果有多个),因此每一个工作者的限制值之和不会超过这个变量中的值。该参数只能在postgresql.conf文件或在服务器命令中设置。但是对个别表可以通过修改表存储参数来覆盖该设置。
这些设置控制旧行版本的冻结。更多信息请参阅Section 24.1.5和Section 24.1.5.1。
vacuum_freeze_table_age (integer) #当表的pg_class.relfrozenxid字段达到该设置指定的年龄时,VACUUM会执行激进扫描。激进扫描与常规VACUUM不同,它会访问每一个可能包含未冻结 XID 或 MXID 的页面,而不仅仅是那些可能包含死元组的页面。默认值是 1.5 亿个事务。尽管用户可以将该值设置为 0 到 20 亿之间的任意值,VACUUM会悄悄将有效值调整为autovacuum_freeze_max_age的 95%,从而在触发防回卷 autovacuum 之前仍有机会执行一次常规手工VACUUM。更多信息请参见Section 24.1.5。
vacuum_freeze_min_age (integer) #指定VACUUM在扫描表时用来决定是否冻结行版本的切断年龄(以事务计)。默认值是 5000 万个事务。尽管用户可以将该值设置为 0 到 10 亿之间的任意值,VACUUM会悄悄将有效值调整为autovacuum_freeze_max_age的一半,这样强制 autovacuum 之间就不会间隔过短。更多信息请参见Section 24.1.5。
vacuum_failsafe_age (integer) #指定表的pg_class.relfrozenxid字段在VACUUM采取特别措施以避免系统范围事务 ID 回卷失败之前所允许达到的最大年龄(以事务计)。这是VACUUM的最后防线。失效保护通常会在防止事务 ID 回卷的 autovacuum 已经运行了一段时间后触发,但也有可能在任何VACUUM期间触发。
当失效保护被触发时,将不再应用任何有效的基于成本的延迟,并且会跳过进一步的非关键维护任务(例如索引 vacuum)。
默认值为 16 亿个事务。尽管用户可以将该值设置为 0 到 21 亿之间的任意值,VACUUM会悄悄将有效值调整为不低于autovacuum_freeze_max_age的 105%。
vacuum_multixact_freeze_table_age (integer) #当表的pg_class.relminmxid字段达到该设置指定的年龄时,VACUUM会执行激进扫描。激进扫描与常规VACUUM不同,它会访问每一个可能包含未冻结 XID 或 MXID 的页面,而不是只扫描那些可能包含死元组的页面。默认值是 1.5 亿个 multixact。尽管用户可以将该值设置为 0 到 20 亿之间的任意值,VACUUM会悄悄将有效值调整为autovacuum_multixact_freeze_max_age的 95%,从而在触发防回卷 autovacuum 之前仍有机会执行一次常规手工VACUUM。更多信息请参见Section 24.1.5.1。
vacuum_multixact_freeze_min_age (integer) #指定VACUUM在扫描表时用来决定是否将 multixact ID 替换为较新的事务 ID 或 multixact ID 的切断年龄(以 multixact 计)。默认值是 5000 万个 multixact。尽管用户可以将该值设置为 0 到 10 亿之间的任意值,VACUUM会悄悄将有效值调整为autovacuum_multixact_freeze_max_age的一半,这样强制 autovacuum 之间就不会间隔过短。更多信息请参见Section 24.1.5.1。
vacuum_multixact_failsafe_age (integer) #指定表的pg_class.relminmxid字段在VACUUM采取特别措施以避免系统范围 multixact ID 回卷失败之前所允许达到的最大年龄(以 multixact 计)。这是VACUUM的最后防线。失效保护通常会在防止事务 ID 回卷的 autovacuum 已经运行了一段时间后触发,但也有可能在任何VACUUM期间触发。
当失效保护被触发时,将不再应用任何有效的基于成本的延迟,并且会跳过进一步的非关键维护任务(例如索引 vacuum)。
默认值为 16 亿个 multixact。尽管用户可以将该值设置为 0 到 21 亿之间的任意值,VACUUM会悄悄将有效值调整为不低于autovacuum_multixact_freeze_max_age的 105%。
vacuum_max_eager_freeze_failure_rate (floating point) #指定VACUUM在积极扫描模式下可以扫描但未能在可见性映射中设置为 all-frozen 的页面数量占整个关系总页面数的比例,超过该比例后就会禁用积极扫描。值0表示完全禁用积极扫描。默认值为0.03(3%)。
请注意,当积极扫描启用时,只有冻结失败才会计入上限,成功的冻结不会计入。成功冻结的页面在内部会被限制为关系中所有 all-visible 但未 all-frozen 页面数的 20%。对成功冻结页面设置上限有助于将成本分摊到多次常规 vacuum 中,并限制在下次积极 vacuum 之前页面再次被修改时积极冻结可能带来的浪费。
这个参数只能在postgresql.conf文件中或服务器命令行上设置; 但也可以通过修改 对应的表存储参数 为单个表覆盖该设置。关于调整清理冻结行为的更多信息,见 Section 24.1.5。
如果您发现文档中有不正确的内容、与您使用特定功能的经验不符或需要进一步说明,请使用此表单来报告文档问题。