论坛首页 Java企业应用论坛

关于The Second Level Cache

浏览 5781 次
该帖已经被评为精华帖
作者 正文
   发表时间:2004-03-18  
: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,不知道有没有人碰到过我这样的问题,大家帮忙看一下,谢谢
   发表时间: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.
0 请登录后投票
   发表时间:2004-03-18  
看过log了,的确没有用到cache,只有sessionFactory初始化的时候会有cache的相关设置。但问题是,select时候得transaction是哪里来的?
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics