PostgreSQL数据库性能问题涉及数千个连接和分布式事务

Moo*_*ose 6 postgresql hibernate jboss7.x

我们正在尝试评估PostgreSQL DB作为我们应用程序中Oracle数据库的替代方案.我们使用PostgreSQL 9.5,它安装在具有128 GB内存,32个CPU内核和SSD存储的Linux机器上.连接池和分布式事务由JBoss 7应用服务器管理,SQL查询由Hibernate 4生成/执行.大多数表有数千万行,其中一行有数亿行.总共约3,000个数据库连接(它们由应用程序服务器共享)处于活动状态并同时使用.我们修改了一些查询,为慢速创建了索引,根据文档等调整了数据库和操作系统设置.但是,吞吐量慢了几倍,最终数据库响应时间增加了10-20倍.

我做了一些谷歌搜索,我找不到任何其他人(ab)使用PostgreSQL DB的信息:

  • 使用数千个活动数据库连接
  • 使用这么多的分布式事务(PREPARED TRANSACTIONS)
  • 在一个表中存储数十亿行

Oracle处理更高的负载没有任何问题.我希望分享您的经验,建议,链接等.

谢谢

Moo*_*ose 3

解决方案是升级 Linux 内核,并将 Java 连接池中的数据库连接数量从 3000 个减少到 300 个。进行此更改后,我们可以处理与 Oracle DB 相同的流量。

偶然间,我发现了一条宝贵的信息,可以在“ 我说过 32 个核心吗?”一文的评论部分中解决问题。64 怎么样?作者:Robert Haas(副总裁、首席架构师、Database Server @ EnterpriseDB、PostgreSQL 主要贡献者和提交者):

不,我是说要在 64 核服务器上获得良好的性能,您需要 PostgreSQL >= 9.2Linux >= 3.2。大多数更改实际上是在 PostgreSQL 方面,但 Linux 内核中的 lseek 扩展内容也很重要。