JPA 调用很长 - 如何检查问题是来自 jpa 还是来自 mysql

JPA call very long - how to check if the issue comes from jpa or from mysql

我有一个应用程序 运行 在我的计算机上运行速度很快,但在 VPS 上运行此 JPA 调用时速度较慢

List<Catalogue> cats = catRepository.findAll() 

这持续了 9 秒(在我的电脑上是 2.5 秒),我想知道什么需要这么长时间:sql 查询还是 jpa? 有没有办法区分这两个执行时长?

提前致谢。

对于 MySql:启用 slow query log 并检查那里是否存在问题(将限制设置为例如 3 秒)。如果问题是 MySql,您会在那里看到有问题的查询。

我怀疑问题出在 JPA,但它可能是什么:获取的数据太多,就像所有关系一样。为此,启用已执行查询的日志记录并查看从数据库中获取的内容。每个 JPA 实现(如 Hibernate 或 EclipseLink)都有不同的实现方式,因此请查看相应的文档,例如。检查 this answer.

有用于分析 JPA 性能的工具,但据我所知它们都是特定于供应商的。

如果您使用 Hibernate,请查看此线程:how to measure hibernate performance?

对于 EclipseLink,检查一下:http://www.eclipse.org/eclipselink/documentation/2.5/solutions/performance002.htm

这些工具应该能让您了解在准备查询、执行查询、处理结果等方面花费了多少时间。