postgres在130MB的pg_restore之后是不能忍受的。 怎么修?

我有一个备份例程,将生产数据库复制到临时服务器上。 它工作没有问题,但是从一个快照恢复后,临时数据库变得难以忍受。 慢到我的Web服务器刚刚超时和502的时候。

我检查了一下,看看可能是什么原因造成的,我已经把它隔离到了两张大桌子上。 我们有一个会议桌上有几个大的文字字段。 我们正在存储一些非结构化数据,目前正在将其保存在TEXT字段中。 一旦我修剪掉了这张桌子(通过删除很多行),分期环境就会加速并开始正常运作。

我已经完成了数据库pg_reindexing的例程,并尝试了VACUUMing,但是它没有太大区别。 还是很慢 不需要访问这两个大表的页面正常运行; 没有加载的页面。

总之,我正在寻求帮助来回答两个问题。

  1. 如果我的数据库转储大于130 MB,不会导致此问题,是否有从生产到分段执行数据库复制的更好方法? 我以为130MB不是一个非常大的数据库。 我怀疑这些都是在我之前谈到的TEXT字段的大型会议表中。

  2. 有什么办法可以优化这个表吗? 在pg_restoring之后我可以做些什么调整吗? 我担心我将不得不在下雨天从这些备份中的一个恢复,这将影响整个网站的性能

提前致谢。

当你真空吸尘时,你正在分析吗?

重build索引不应该帮助:当你pg_restore所有这些索引都是从头开始创build的。

VACUUM本身不会做任何事情:一个新恢复的数据库不包含任何死元组摆脱。

在还原之后在整个数据库中运行ANALYZE,这会更新统计信息,从而使查询优化器能够生成高效的查询计划。