我有一个数据库db1,它工作得非常慢。它使用连接几分钟执行硬查询。我创建了该数据库的副本:db2。然后我创建并调整了一些索引,db2开始工作得更快!之后我的目标是将db1快速调整为db2。我复制了db2(pg_dump -Fc db2> db2.dump)并将其恢复为新的db1。然后我测试了它的速度。但工作速度不一样!新的db1要慢得多(就像之前一样)。这里的问题是什么? pg_dump是否会转储db中的所有内容?数据,索引等?请指教。
答案 0 :(得分:0)
加载后,statictics表仍为空(它们不是转储的一部分)。您需要手动运行analyze。as explained in the postgres manual
答案 1 :(得分:0)
是pg_dump
转储所有对象定义,表,视图,索引,类型和执行操作。您已重置缓存并销毁所有统计信息,因此在新恢复中运行相同查询时可能会遇到错误的查询时间,您可以执行ANALYZE
刷新所有统计信息,但请考虑您现在已经在如前所述,群集 db2 + db1 而不是仅db1 ,因此缓存不太可用于db1,您必须在进行分析之前销毁db2。