【发布时间】:2021-10-25 16:27:05
【问题描述】:
在我的项目中,我在 postgres 数据库的一个表中存储了大量行(约 3 亿条记录)。一行包含 77 列,其中包含字符串、整数类型,很少有布尔值和日期。我的问题是,当我尝试在 GUI 上浏览记录时,即使我的数据库仅包含其最终容量的 3%,它的运行速度也非常慢。
对于使用 Spring JPA 的 DB 连接和带有分页的 findAll() 方法,当我在 DB(3.3国标)。 如果我从 pgsql cli 执行相同类型的查询
slelect * from myTable order by column1 limit 20;
我立即得到相同的结果集,因此 postgres 性能没有问题。 使用本机查询覆盖 findAll() 的默认实现将时间减少到大约 2.8 秒,这仍然很长,我也尝试仅使用包含 77 列中的 6 列的视图来获取少数社区,但它并没有太大变化。
有什么建议可以在哪里查看或如何提高性能,以使此应用程序仍可用于包含 30 倍以上记录的数据库?
附:应用程序只不过是用于浏览这些记录的 GUI,此外每 15 分钟插入约 50K 的新记录。我的虚拟机分配了 8 个 vCPU 和 12GB 的 RAM。
【问题讨论】:
-
我通常处理类似的表格,分页调用3秒是不正常的。如果您需要进一步的帮助,您将不得不分享一些代码和表格 DDL(包括索引)。
标签: postgresql performance spring-data-jpa crud-repository