0

CentOS 7.9、postgres 9.6.20 我们在我们的 postgres 数据库中发现了我们认为是损坏的索引。这是在生产中,完全把它拉下来不是我们能做的。我们正在努力重新创建索引,但 autovacuum 似乎也试图处理索引。向 autovac pid 发送终止命令将被忽略。问题是我们如何禁用 autovacuum 足够长的时间来执行索引重新创建?
为了加剧这个问题,我们现在似乎已经达到了交易环绕限制,虽然距离实际限制还有数英里,但它不是一个好地方。

4

1 回答 1

0

将该表提高autovacuum_freeze_max_age到 1000000000:

ALTER TABLE tab SET (autovacuum_freeze_max_age = 1000000000);

这应该会暂时平息 autovacuum,但它仍然是安全的。

然后杀死反环绕自动真空。

现在您可以创建新索引并删除旧索引。

然后改回设置:

ALTER TABLE tab RESET (autovacuum_freeze_max_age);
于 2020-12-07T08:37:09.400 回答