我最近从hibernate 3.3.1.GA更新到hibernate 3.5.0,我遇到了很多性能问题。作为测试,我向我的数据库添加了大约8000个实体(这反过来导致其他实体被保存)。这些实体以20个批量保存,因此出于性能原因,事务不会太大。
当使用hibernate 3.3.1.GA时,所有8000个实体都会在大约3分钟内保存。当使用hibernate 3.5.0时,它的启动速度比使用hibernate 3.3.1慢。但它变得越来越慢。在大约4,000个实体中,有时需要5分钟来保存一批20个。如果我然后转到mysql控制台并从mysql通用查询日志中手动输入一个insert语句,其中一半在0.00秒内运行完美。其中一半需要很长时间(可能是40秒)或超时“ERROR 1205(HY000):超过锁定等待超时;尝试从MySQL重启事务”。
在我应该注意的3.5.0版本的hibernate事务管理中有什么变化吗?我改变以体验这些不可用的性能问题的唯一的事情是替换以下hibernate 3.3.1.GA jar文件:com.springsource.org.hibernate-3.3.1.GA.jar,com.springsource.org.hibernate.annotations- 3.4.0.GA.jar,com.springsource.org.hibernate.annotations.common-3.3.0.ga.jar,com.springsource.javassist-3.3.0.ga.jar与新的hibernate 3.5.0发布hibernate3 .jar和javassist-3.9.0.GA.jar。
感谢。
答案 0 :(得分:0)
即使我可以在Hibernate 3.5.0-Final中看到与事务管理相关的一些事情,但您所描述的内容肯定不正常(我找不到关于此类问题的open issue)。所以,虽然没有看到任何代码很难说什么,但如果你改变的唯一的东西是Hibernate工件的版本,那么很可能在某处有回归。
我建议创建一个test case没有任何Spring的东西来隔离Hibernate的任何潜在问题(无论如何你都需要报告问题)。