浏览 5780 次
该帖已经被评为精华帖
|
|
---|---|
作者 | 正文 |
发表时间:2004-03-18
我用Hibernate作了一个项目,总的感觉Hibernate的性能还是很高的,不过项目发布以后发现一个比较严重的问题 我们用的事Oracle的数据库,我们的站点访问量还是非常高的,项目发布没多久,DBA就告诉我我们的数据库查询中有大量的Transaction,而且都带了read-write,甚至连select当中也带了transaction,但是我检查了代码,select方法中我并没有使用transaction,后来我发现可能是Cache造成的,因为原先我的hbm.xml文件当中指明了使用JCS Cache,read-write属性,并且hibernate的DOC当中也说二级cache是基于transaction的,所以我在hbm.xml文件中去掉了这个JCS Cache的配置,但是DBA反映还是有transaction,我今天又看了hibernate的源代码,发现hibernate一定是会打开二级cache的,无非默认的是EHCache。 现在我的情况是这样的,因为我们网站访问量很高,但大部分都是select操作,过多地transaction对数据库影响很大,所以transaction必须去掉,只有insert\update这种写操作才用transaction,不知道有没有人碰到过我这样的问题,大家帮忙看一下,谢谢 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2004-03-18
wingoffire 写道 :shock:
我用Hibernate作了一个项目,总的感觉Hibernate的性能还是很高的,不过项目发布以后发现一个比较严重的问题 我们用的事Oracle的数据库,我们的站点访问量还是非常高的,项目发布没多久,DBA就告诉我我们的数据库查询中有大量的Transaction,而且都带了read-write,甚至连select当中也带了transaction,但是我检查了代码,select方法中我并没有使用transaction,后来我发现可能是Cache造成的,因为原先我的hbm.xml文件当中指明了使用JCS Cache,read-write属性,并且hibernate的DOC当中也说二级cache是基于transaction的,所以我在hbm.xml文件中去掉了这个JCS Cache的配置,但是DBA反映还是有transaction,我今天又看了hibernate的源代码,发现hibernate一定是会打开二级cache的,无非默认的是EHCache。 现在我的情况是这样的,因为我们网站访问量很高,但大部分都是select操作,过多地transaction对数据库影响很大,所以transaction必须去掉,只有insert\update这种写操作才用transaction,不知道有没有人碰到过我这样的问题,大家帮忙看一下,谢谢 Please change log4j.properties set logging level to DEBUG you will see when Hibernate fetch objects from cache, when from DB. It won't use cache unless you set cache in .hbm.xml. |
|
返回顶楼 | |
发表时间:2004-03-18
看过log了,的确没有用到cache,只有sessionFactory初始化的时候会有cache的相关设置。但问题是,select时候得transaction是哪里来的?
|
|
返回顶楼 | |