一尘不染

通常的休眠性能陷阱

hibernate

我们刚刚完成了对我们的应用程序的分析。(她开始慢了)。问题似乎是“处于hibernate状态”。

这是旧版映射。谁在工作,那是工作。后面的关系Shema也可以。

但是有些请求实在太慢了。

因此,对于因hibernate而导致的常见错误和常见错误的任何输入,最终都会导致响应缓慢,我们将不胜感激。

例子:渴望代替懒惰可以大大改变响应时间…。


编辑:通常,阅读手册通常是一个好主意。整个章节在这里涵盖了这个主题:

http://docs.jboss.org/hibernate/core/3.3/reference/en/html/performance.html


阅读 249

收藏
2020-06-20

共1个答案

一尘不染

最常见的陷阱之一是臭名昭著的 n +
1选择问题
。默认情况下,Hibernate不会加载您不需要的数据。这减少了内存消耗,但使您面临n +
1选择的问题,可以通过切换到正确的提取策略来检索将对象加载到适当初始化状态所需的所有数据来避免此问题。

但是也不要取太多,否则会遇到相反的问题,即 笛卡尔积问题 :与执行许多SQL语句不同,您可能最终会创建检索过多数据的语句。

这就是调优的全部目的:为应用程序的每个用例(或至少对于需要调整的用例),在数据不足和数据过多之间找到中间点。

我的建议:

  • 首先在Hibernate级别激活SQL日志记录
  • 运行关键的用例(20%的人使用了80%的时间),或者如果您有那么奢侈的话,甚至全部使用
  • 识别可疑查询并优化提取计划,检查索引是否使用正确等
  • 参与您的DBA
2020-06-20