performance - 从 Hibernate 3 迁移到 Hibernate 5 时的严重性能影响
问题描述
我打算从 Hibernate 3.6.6 迁移到 Hibernate 5。实际迁移似乎并不困难,但面临的最大问题是性能问题。过去在 Hibernate 3 中大约 15 秒完成的事务在 Hibernate 5 中需要超过 4 分钟才能完成。这真是令人震惊,我不敢相信。
当使用调试日志进一步钻取时,观察到 Hibernate 3 仅初始化 Non-Lazy 集合,而 Hibernate 5 似乎处理了所有集合,包括 Lazy 集合。在hibernate 3的日志文件中可以发现engine.StatefulPersistencContex.initializeNonLazyCollections:893
,没有发现Hibernate 5这样做
在该类AbstractFlushingEventListener
中,Hibernate 3 日志中用于处理集合的条目非常少(20K)engine.Collections.processReachableCollections
,而在 Hibernate 5 日志中发现了更多的 900 万个此类条目,并为惰性日志提供了级联集合。
因此,很明显延迟是从哪里引起的。惊讶地看到这种行为没有看到任何相关的线程。
只是为了澄清所有集合都带有注释FetchType.LAZY
。没有任何实体代码。
有没有人遇到过这个...任何帮助/指针将不胜感激。提前致谢。
解决方案
推荐阅读
- cassandra - Cassandra 组结果按日期/期间
- angular - NGXS 路由器插件中断路由
- django - django.conf 导入设置 vs from project.settings 导入 VAR
- sapui5 - 智能过滤栏中多输入的默认值
- variables - 如何获取模板中的 defaultContentLanguage 设置
- javascript - 反应表单的 onChange 未在值更改时触发
- laravel - 无法使用 Vue.js 在 Laravel 中以经过身份验证的用户身份发出请求
- ruby - 如何通过动态接收类名来实例化类
- sql - sqldf R错误创建表
- c - C:将自由语句移动到单独的函数中会导致内存泄漏