0

我有 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 200M 时,会触发该表的 autovacuum trx 环绕。即使我检查了表结构,上面的 autovacuum_freeze_max_age 值也更新为 600M。

现在的问题是

  1. 为什么即使有这些变化也会发生这种情况?
  2. 需要检查任何其他参数吗?

任何建议表示赞赏。提前致谢。

4

1 回答 1

0

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

设置 autovacuum_freeze_max_age 仅在禁用 autovacuum(显式或通过为其他设置设置奇异值而有效)或仅插入表(v13 中的这一更改)时才重要。

于 2021-10-05T18:47:38.970 回答