1

我已经将一个 2tb Postgres 9.4 数据库从一台服务器迁移到另一台服务器,导入后 autovacuum 因高 cpu 和磁盘而疯狂了好几天。该数据库有超过 40,000 个模式/表。

我已尝试关闭数据库并重新启动,但使用率仍然很高。我之前在导入后遇到过真空问题,这似乎是 Postgres 的常见问题,有什么办法可以解决吗?导出的数据库很好,没有真空问题,这似乎是由导入引起的。

我试过了:

vacuumdb --all --full -w

但是如果由于语句超时而未能完成。除了禁用 autovacuum 之外,还有什么解决办法吗?

G

4

1 回答 1

4

数据库必须在导入后重新创建统计数据和可见性地图。所以这是预期的行为。如果您不VACUUM手动运行或禁用了 autovacuum,那么 Postgres 将无法有效工作。

导出是读操作,不需要做VACUUM。如果您导入 2TB 数据,则预计 CPU 和 IO 会很高,直到VACUUM完成。您可以VACUUM手动运行(以更高的速度),但它不应该因为超时而失败(您应该增加超时)。

于 2019-08-24T03:52:52.790 回答