在PostgreSQL数据库服务器v9.3迁移到v9.6之后,我注意到整个系统的性能有所下降。配置参数与v9.3中的相同,用于考虑下一个参数:
共享缓冲区=10000MB
工作区=64MB
维护工作=1024MB
我也试着监控一些资源,这就是结果
total used free shared buff/cache available
Mem: 31G 385M 4.5G 10G 26G 19G
Swap: 3.0G 0B 3.0G
另外,当我运行一些查询时,服务器会在内部启动以下查询:
select typname from pg_type where oid=1043
set search path to public
deallocate pdo_stmt_0000000e
然后运行我的查询,但我担心在迁移之后会对性能产生一些影响。我有另外一个9.6服务器,它有一个新的安装,没有迁移,也没有出现这个问题(响应时间)。在这些查询中,它似乎花费了太多时间。
你对如何解决这个问题有什么建议吗?
我是用
pg_upgrade
完成的,但是我注意到在这个过程中有些数据并没有迁移到v9.6服务器。在那之后,我做了一个转储/恢复过程并vacuum analyze
。 最佳答案
您可以在慢速和快速系统上安装pg_stat_statements扩展,并比较两个系统中顶级查询的性能。当时间/执行有重大差异时,您可以检查执行计划(使用explain analyze)。
有时新功能在升级后会对性能产生重大影响。如果我的内存很好的话,9.6中添加了并行顺序扫描。虽然这基本上是一个很好的特性,但在某些情况下,它的使用可能会导致查询速度减慢。这可能是将parallel_setup_cost(或其他计划器参数)设置为不同值以避免无效的并行顺序扫描的原因。
稍后编辑:正如我在https://blog.2ndquadrant.com/postgresql96-parallel-sequential-scan/中看到的,并行查询执行在默认情况下没有被激活,所以这可能不是您的情况变慢的原因。不过,我认为,只有对顶级查询的性能及其计划进行分析,才能揭示这个问题。
关于sql - PostgreSQL迁移后会降低性能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54192170/