Autovacuum即使增加了表级的autovacuum_freeze_max_age,也会触发表的事务封装



我有postgresql RDS和Aurora实例。在版本12中,有一个接近200M trx id的热表。为了防止在trx封装时碰到autovacuum,我将autovacuum_freeze_max_age表设置为600M,因为我无法在实例级别执行重启来更改autovacuum_freeze_max_age值。

alter table sample_table SET (autovacuum_freeze_max_age=6000000000);

然而,当表到达trx id 200, autovacuum trx概括表有触发。即使我检查了表结构,上面的autovacuum_freeze_max_age值也被更新为600M。

现在的问题是

  1. 为什么发生了这些变化?
  2. 需要检查其他参数吗?

欢迎任何建议。提前谢谢。

在表上启动的任何普通真空(自动或手动),如果超过vacuum_freeze_table_age,将提升为绕空真空。这是冻结的主要方式。

设置autovacuum_freeze_max_age通常只在autovacuum被禁用(要么显式地禁用,要么通过为其他设置设置奇怪的值而有效地禁用),或者对于只插入的表(这一点在v13中更改)才有意义。

查看postgresql.conf文件中的vacuum_freeze_table_age参数值

最新更新