Postgresql 将数据库从9.6移动到11.6 postgres服务器

Postgresql 将数据库从9.6移动到11.6 postgres服务器,postgresql,amazon-rds,Postgresql,Amazon Rds,在将数据库从postgres 9.6移动到11.6之后,我们在运行一些查询时遇到了性能问题 有两台并行运行的postgres服务器。9.6和11.6。麻烦是AWS RDS的 使用pg_dump命令将数据库转储到文件(11.6 postgres工具)。连接到运行Postgres 9.6的RDS。(PGPASSWORD=pg_dump-Fc--host=--port=5432--username=-f/tmp/filename.dump--exclude table data'table_a'--

在将数据库从postgres 9.6移动到11.6之后,我们在运行一些查询时遇到了性能问题

  • 有两台并行运行的postgres服务器。9.6和11.6。麻烦是AWS RDS的
  • 使用
    pg_dump
    命令将数据库转储到文件(11.6 postgres工具)。连接到运行Postgres 9.6的RDS。(
    PGPASSWORD=pg_dump-Fc--host=--port=5432--username=-f/tmp/filename.dump--exclude table data'table_a'--exclude table data'table_b'--exclude table data'table_c'--exclude table data'table_d'
  • 使用
    pg_restore
    命令将数据库加载到文件(11.6 postgres工具)。连接到运行postgres 11.6的RDS。(
    pg_restore-Fc-d$PGDATABASE-v-j2
数据库已恢复,看起来一切正常,但少量查询需要很长时间才能运行或失败


我们是否遗漏了什么,或者我们应该用其他方法来做这件事?我们已经运行了
ANALYZE
,但没有任何帮助。

您是否也运行了VACUUM?是的,也运行了VACUUM。没有区别。在这种情况下,您需要捕获一个错误的查询,并使用
EXPLAIN(ANALYZE,BUFFERS)
查看执行计划。可能是auto\u EXPLAIN()可能会有帮助。或者对于失败的查询,您可以从错误消息中获取查询文本,只需执行
EXPLAIN
(无需分析,因为这取决于查询是否成功)在两个数据库中都使用它。您是否也运行了真空?是的,也运行了真空。没有区别。在这种情况下,您需要捕获一个错误的查询,并使用
EXPLAIN(ANALYZE,BUFFERS)
查看执行计划。可能是auto\u EXPLAIN()可能会有帮助。或者对于失败的查询,您可以从错误消息中获取查询文本,然后在两个数据库中对其进行解释(不进行分析,因为这取决于查询是否成功)。