【发布时间】:2016-12-20 18:30:48
【问题描述】:
我有一个仪表板视图,它需要来自整个数据库表的一小组数据。我优化了数据库查询(例如删除了子查询)。现在有大约 20 个查询一个接一个地执行,它们从数据库中获取不同的数据集。大多数 HQL 查询包含 GROUP BY 和 JOIN 子句。使用 Spring REST 接口,将结果返回到前端。
如何优化自定义查询的执行?我最初的想法是并行运行数据库查询。但是我该如何实现呢?在做了一些研究之后,我发现了注释@Async,这使得并行运行方法成为可能。但这适用于 Hibernate 方法吗?是否总是为 JpaRepository 中使用 @Query 注释的每个方法创建一个新的数据库会话?运行数据库查询到底对整体执行时间有影响吗?
并行运行数据库调用的另一种方法是将 Dashboard 调用拆分为几个单独的 Ajax 调用(每个关注点都有自己的 Ajax 调用)。我不想这样做,因为每次打开仪表板(或例如更改日期范围)时,都会进行另外 20 次 Ajax 调用以获取新数据。同样的问题仍然存在:并行运行 SQL 查询是否会影响数据库的执行时间?
我目前还没有向数据库添加额外的索引。这将是下一件事,我肯定会这样做。但是,我对并行运行查询的性能影响以及如何使用 Spring 以编程方式实现这一点感兴趣。
我的项目最初是由 jHipster 生成的(Spring Boot、MariaDB、AngularJS 等)
【问题讨论】:
标签: spring hibernate parallel-processing spring-data hql