问题描述
在启动了我的Spring应用程序之后,通过JPA/Hibernate连接到Postgres数据库并使用Spring数据REST之后,通过REST对应用程序进行的前10个调用非常非常慢(从5-10秒不等)。
项目设置和配置
我有一个父“模板”项目,通过它向子项目提供一个通用域模型。然后在每个子项目(包括父项目中的所有其他bean)中都可以使用这些bean。
该设置如下所示:
对于父项目:
...is亲本
次级项目:
...is亲本
。
预期和实际结果
我尝试在两个项目中创建同一个实体的多个实例(通过HTTP,使用REST )。使用父项目,实体在大约0.1秒内被创建,一致。但是在子项目中,对于完全相同的实体来说,最初的10次--而且始终是10次-- HTTP调用( POST和GET)都非常慢,每个请求最多10秒。预期的行为是看到相同的速度从第一次呼叫。
在完成这10个请求之后,性能与父项目相似。
我不知道为什么会发生这种行为。如果有人有建议,我们会非常感激的!
发布于 2020-05-02 11:58:22
通过查看Hibernate正在执行的SQL查询,我解决了这个问题。我是和InheritanceType.TABLE_PER_CLASS一起工作的。正因为如此--正如许多在线文档所提到的--在处理大量实体类型时,可能会严重影响性能,这在我的情况下是通过扩展基本项目来实现的。必须执行太多的UNION和JOIN查询。通过切换到InheritanceType.SINGLE_TABLE,它又在快速地工作了!
https://stackoverflow.com/questions/61274903
复制相似问题