Database 数据库导入后Postgres autovacuum高cpu/磁盘

Database 数据库导入后Postgres autovacuum高cpu/磁盘,database,postgresql,postgresql-9.4,autovacuum,Database,Postgresql,Postgresql 9.4,Autovacuum,我已经将一个2tb的Postgres 9.4数据库从一台服务器迁移到另一台服务器,导入之后,autovacuum在高cpu和高磁盘的情况下疯狂了好几天。该数据库有40000多个模式/表 我已尝试关闭数据库并重新启动,但使用率仍然很高。 我以前在导入后遇到过真空问题,这似乎是一个常见的博士后问题,有什么办法解决吗?导出的数据库很好,没有真空问题,似乎是由导入引起的 我试过: vacuumdb --all --full -w 但是如果由于语句超时而未能完成。 除了禁用自动真空,还有什么解决方案吗

我已经将一个2tb的Postgres 9.4数据库从一台服务器迁移到另一台服务器,导入之后,autovacuum在高cpu和高磁盘的情况下疯狂了好几天。该数据库有40000多个模式/表

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

我试过:

vacuumdb --all --full -w
但是如果由于语句超时而未能完成。 除了禁用自动真空,还有什么解决方案吗


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


导出是一个读取操作,无需执行
真空操作
。如果导入2TB数据,则在
VACUUM
完成之前,CPU和IO都会很高。您可以手动(以更高的速度)运行
VACUUM
,但它不应该因为超时而失败(您应该增加超时)

导入后,数据库必须重新创建统计信息和可见性地图。因此,这是预期的行为。如果您不手动运行
VACUUM
或禁用了自动真空,则Postgres将无法有效工作


导出是一个读取操作,无需执行
真空操作
。如果导入2TB数据,则在
VACUUM
完成之前,CPU和IO都会很高。您可以手动(以更高的速度)运行
VACUUM
,但它不应该因为超时而失败(您应该增加超时)

9.4的哪个次要版本?对我来说,“导入”和“迁移”是不同的。你能解释一下你到底做了什么吗?您是否使用
pg|dump…| psql…
将来自两个不同集群的数据合并到一个集群?“vacuumdb--all--full-w”几乎可以肯定--full选项是一个错误。从一个数据库导出pg|dumpall,然后导入另一个psql…所以“vacuumdb--all-w”更好?为什么?9.4的哪个小版本?对我来说,“导入”和“迁移”是不同的东西。你能解释一下你到底做了什么吗?您是否使用
pg|dump…| psql…
将来自两个不同集群的数据合并到一个集群?“vacuumdb--all--full-w”几乎可以肯定--full选项是一个错误。从一个数据库导出pg|dumpall,然后导入另一个psql…所以“vacuumdb--all-w”更好?为什么?经过第四天对磁盘/cpu的真空破坏,它终于稳定下来了。注意,我每天早上都要重新启动数据库,否则它会一直很高。有没有办法不花4天的时间?需要“vacuumdb--all--full-w”吗?@James-4天看起来太长了-可能有些是错误的-Postgres错误,IO太慢,内存太少。。。可能有40000个对象是vacuumdb的问题,可能一些系统表太多了。真空的速度很大程度上取决于索引的数量。如果可以减少索引,那么就可以减少必要的时间。最后,经过第四天的磁盘/cpu的真空破坏,它终于稳定下来。注意,我每天早上都要重新启动数据库,否则它会一直很高。有没有办法不花4天的时间?需要“vacuumdb--all--full-w”吗?@James-4天看起来太长了-可能有些是错误的-Postgres错误,IO太慢,内存太少。。。可能有40000个对象是vacuumdb的问题,可能一些系统表太多了。真空的速度很大程度上取决于索引的数量。如果可以减少索引,那么就可以减少必要的时间。