我已经将一个2tb的Postgres9.4数据库从一个服务器迁移到另一个服务器,在导入之后,高cpu和高磁盘的autovacuum将疯狂运行几天。数据库有40000多个模式/表。
我试过关闭数据库并重新启动,但仍然使用率很高。
我以前有过进口后真空的问题,这似乎是一个常见的后遗症问题,有没有办法解决呢?导出的数据库很好,没有真空问题,似乎是由导入引起的。
我试过:

vacuumdb --all --full -w

但如果由于语句超时而未能完成。
除了关闭自动真空,还有什么解决办法吗?
database - 数据库导入后的Postgres autovacuum高CPU/磁盘-LMLPHP

最佳答案

导入后,数据库必须重新创建统计信息和可见性映射。所以这是预期的行为。如果不手动运行VACUUM或禁用了自动真空,Postgres将无法有效工作。
导出是一个读取操作,不需要执行VACUUM。如果导入2TB数据,则在完成VACUUM之前,CPU和IO都会很高。您可以手动(以更高的速度)运行VACUUM,但它不应该因为超时而失败(您应该增加超时)。

10-07 12:32
查看更多