java - JPA:查询执行时间长的可能原因

标签 java hibernate jpa jpql

我有一个使用 JPA 查询的 spring boot 应用程序。直接在实时 Oracle DB 上执行相同的查询往往会在大约 20-40 毫秒内给出结果。另一方面,当我尝试使用该应用程序进行点击时,所用时间从 1-2 秒到 50-60 秒不等。

我想了解这种行为的原因,以及为什么它的行为不可预测。我们怀疑可能是池中的线程数量有限,但后来在将应用程序与外部使用隔离后,现在只有一个用户表现出相同的行为。

查询应该以快速的方式一致地执行。 我想知道这种行为背后的可能原因。

最佳答案

它真的可以是任何东西,例如不可靠的网络、争用的数据库资源、JDBC 驱动程序配置错误或 JVM GC 暂停。尝试确定问题出在哪里:发生问题时是 Java 客户端还是正在占用时间的数据库服务器。

如果您怀疑问题出在数据库上,最好跟踪数据库服务器端的连接和 SQL 查询。这将为您提供最多的信息,例如查询执行计划。每个数据库都有自己的工具,例如Oracle 文档有 entire chapter on Performing Application Tracing .

关于java - JPA:查询执行时间长的可能原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55687440/

相关文章:

java - 通过 JDBC 语句执行 DDL 时出现 hibernate 错误

java - Hibernate 保存实体不工作

java - 使用@Query时将 'nativeQuery'设置为 'true'有什么好处?

java - Couchbase、Spring 和 JPA

java - 有没有一种优雅的方法可以在 Java 中进行部分正则表达式匹配?

java - 难以理解java游戏开发的图像加载日期

java - 如何将 Android 按钮的启用属性绑定(bind)到 ViewModel

java - NIFI : limit number of concurrent tasks of a NIFI processor in a NIFI-Cluster

java - 使用 Session.merge() 函数在 hibernate 中合并两个对象时出现问题

java - JPA如何推断属性的数据类型