我有一个使用 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/