Java JPA/HIbernate查询速度非常慢,而JDBC/Postgres查询速度很快

Java JPA/HIbernate查询速度非常慢,而JDBC/Postgres查询速度很快,java,postgresql,hibernate,jpa,spring-data-jpa,Java,Postgresql,Hibernate,Jpa,Spring Data Jpa,我正在Heroku上运行一个运行Hibernate 5.4.2和Postgresql 42.2.2 DB的spring boot应用程序 我使用JPARepository的默认findAll()方法来选择整个表。大约有50个实体,需要35秒。当我在同一台机器上通过终端使用Heroku CLI运行select all查询时,查询将在约130毫秒内完成 我一直在尝试使用JProfiler来找出问题所在。通过JProfiler查看查询,我注意到关联的JDBC调用大约需要140ms,这与Heroku C

我正在Heroku上运行一个运行Hibernate 5.4.2和Postgresql 42.2.2 DB的spring boot应用程序

我使用JPARepository的默认findAll()方法来选择整个表。大约有50个实体,需要35秒。当我在同一台机器上通过终端使用Heroku CLI运行select all查询时,查询将在约130毫秒内完成

我一直在尝试使用JProfiler来找出问题所在。通过JProfiler查看查询,我注意到关联的JDBC调用大约需要140ms,这与Heroku CLI非常接近。但是查询本身仍然需要35秒

我已打开hibernate登录,并确保没有发送其他查询。此外,我还尝试使用H2数据库运行相同的查询来支持我的应用程序。查询在不到100毫秒的时间内返回

请参阅JProfiler查询时间

我的实体很简单。与其他类没有关系,所以我认为这不是一个n+1查询问题

@实体
@表(name=“事件”)
@诺尔格构装师
@吸气剂
@托斯特林
@EqualsAndHashCode(callSuper=true)
公共类SqlEvent扩展了SerializedObjectRecord{
@身份证
@GeneratedValue(策略=GenerationType.SEQUENCE)
@列(name=“id”,updateable=false,nullable=false)
@非空
私人长id;
@列(nullable=false)
@非空
私有字符串名称;
@列(nullable=false)
@非空
私有UUID-UUID;
@列(nullable=false)
@非空
私有UUID sqlCommandUuid;
@列(nullable=false)
@非空
私有即时时间戳;
@列(nullable=false)
@非空
私有字符串avroSchemaFingerprint;
我的服务班

@覆盖
@定时(value=“服务”)
公共集合getAll(UUID命令ID){
长启动=System.nanoTime();
List List=this.sqlEventRepository.findAll();
long end=System.nanoTime();
长持续时间=(结束-开始)/1000000;#持续时间约为35000毫秒,如Jprofiler所说
返回转换(列表);
}
[1]: https://i.stack.imgur.com/tAKwf.png

只是检查-您是否也在没有JProfiler的情况下运行它,并且运行速度也一样慢?探查器有时会对性能产生负面影响。@ErwinBolwidt嘿!是的,不幸的是,它也一样慢。您找到解决方案了吗?我刚刚遇到同样的问题。只是检查-您是否也在没有JProfiler的情况下运行它,并成功了运行同样慢?探查器有时会对性能产生负面影响。@ErwinBolwidt嘿!是的,不幸的是,它同样慢。你找到解决方案了吗?我刚刚遇到了同样的问题。