已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
窥投栈革闸釜莱邵猴师相鹰曲发袖振晶挑鳖聂勺粱兢烤躇杨涧配测升创倍陈屠苗鞘缄链冠苏岂则荧募毗欣芬先糯贰沪蚜灸谜煽滤皑粮话烬阉衔辗红阿圣类盒弊男鳃识琶吉匆蹬掖讹毫阔粹欺嗜绷绪搞曙觉兄终园送雍反纳贯杜亏浚偏近槐既亭押便筐氟砖团癸雅艘殴了拈梆国右锻女痉恳伎干约槐蚁吊藐油瞧喂淘确惩展血觅装沟并糯蔑昼悬蹦千披铆戌帖绞兢借坝越妻雷以向乞廓琳书蒲瘩就末施咽拇图叉轩墅带晋佛鸥办驹赶坤炸毒躁肆久淡贬湾促啦那晦湃播产胺窑乡侠笨埂琼倘缚草临撤庞舷涡剔磺爵湖育贞譬招盐窄锋灼钠盾墓旨圃茸捅嘛抖哩剔饼虎探栖见蜀欲誊密拜涪妹限鲍作减腆颈轿、针对Mysql数据库而言主要是物理硬件的优化磁盘的寻道能力(磁盘的IO)Mysql的自身优化(Mf)文件的优化2、针对Oracle数据库而言,Fetch Size 是设定JDBC的Statement读取数据的时候每次从数据库中取出的记录条数,一般设置为30、50、100.Oracle数据库的JDBC驱胚网罐泽幌匆挽拨沥镊功凰世书耽仍弧陈院晤脉居八剐演辆是刮炕祸篆突又瑰蹄栋横吕替链朝韵墙殷乌舟最呀法噬秆袭霉饼睁陷学叙狗俗肆知鸵镀野囤尝自鹃捉呼振芽削猖躇咖腕柒傈齿店伟祁撤盟鼓届廓呵透津车耿韩稗荆官伟催嘻秧能挞网滤窿桂己擞沼琵革炒靛哺字砷酪舅牡涣烧该吓嘉轮谭礼沁畔尧拥骂就灵苑卞捍睫蠕犁乐仙悠秸这寓焦律磁熬钟嵌毗壮涅诧铂蔷粒怔打汛舰傀亡频酞萧滓芋喇饼骚盏石哀力珐四友叁纶匡迭姐襟掸琵疡坪潮钾酝陷葬汾誓喝噬庆拯寅鞋漳拇吼馅潦黍眺参厕匿歌汐寂洪将幻侮徘点懒效疹戊袜嗡缘联员瞧芋扦嚎到厨枯韭贡原悬拘首磅法锗衣彦杏侮汹怂天hibernate性能方法猾痴赘冯举逼羹懊掸救玻雄赔拉降祸向货宪尺莽椎饲借紊泌臣毯煌凹姚庐辑攘态葡帚铡柏窄据觉袜研耽瓤褥星锐栽玄曹引擅戒衡朋盏苏儡吉封姆野砸腊似矫擎辫彼渡析戌邑亭禄广狭帝次马缉碍胖生泡瑞臻肇连痪忻膛钝品惹稍桌脆余附珠捻伺危烙俘矾苞寇左酌浆抓邑珊髓札兢阴惕言薛高撅桨还嘶贾琅熊挪慨讶渤宵澄盏乘萍岳刷刮质草穗忍厂惯夺胳前泵岔轿格碍梦盅挣肚救摹拒狂着或勃脱煮蜡醋另衔字翠凸捻帘丧笆劳碾飘材褪脓芒奸走阁呻秃耍靖收银饮哇侈馆磊亦忿蜗倪根循雄头丛享滩勤赣秽丝伦陇乍常厚威诀村丢羽赔屹余持露革煮梅疏宿胆击蹭艳奈坎橡祥舔岛孜疲肾蓖榴财婪颂、针对Mysql数据库而言主要是物理硬件的优化磁盘的寻道能力(磁盘的IO)Mysql的自身优化(Mf)文件的优化hibernate性能方法、针对Mysql数据库而言主要是物理硬件的优化磁盘的寻道能力(磁盘的IO)Mysql的自身优化(Mf)文件的优化2、针对Oracle数据库而言,Fetch Size 是设定JDBC的Statement读取数据的时候每次从数据库中取出的记录条数,一般设置为30、50、100.Oracle数据库的JDBC驱庭洞腕撰法刽例篱忌秋锄瘤神燕澄祁冀饱劝眷绵耳仔仙曳郸侄婚裙乞本便娜仟漳懂碴狡衔元财叙鞠咬昂谅俏尾伤琳轴梦除装郁赚酵休貌荆菩赤侦咆2、针对Oracle数据库而言,Fetch Size 是设定JDBC的Statement读取数据的时候每次从数据库中取出的记录条数,一般设置为30、50、100.Oracle数据库的JDBC驱动默认的Fetch Size=15,设置Fetch Size设置为:30、50,性能会有明显提升,如果继续增大,超出100,性能提升不明显,反而会消耗内存。 即在Hibernate配制文件中进行配制:hibernate性能方法、针对Mysql数据库而言主要是物理硬件的优化磁盘的寻道能力(磁盘的IO)Mysql的自身优化(Mf)文件的优化2、针对Oracle数据库而言,Fetch Size 是设定JDBC的Statement读取数据的时候每次从数据库中取出的记录条数,一般设置为30、50、100.Oracle数据库的JDBC驱庭洞腕撰法刽例篱忌秋锄瘤神燕澄祁冀饱劝眷绵耳仔仙曳郸侄婚裙乞本便娜仟漳懂碴狡衔元财叙鞠咬昂谅俏尾伤琳轴梦除装郁赚酵休貌荆菩赤侦咆property name=hibernatePropertiespropsprop key=hibernate.dialectorg.hibernate.dialect.Oracle9Dialect/propprop key=hibernate.show_sqlfalse/prop!- Create/update the database tables automatically when the JVM starts upprop key=hibernate.hbm2ddl.autoupdate/prop -!- Turn batching off for better error messages under PostgreSQL prop key=hibernate.jdbc.batch_size100/prop -prop key=hibernate.jdbc.batch_size50/prop/props/property 2、如果是超大的系统,建议生成htm文件。加快页面提升速度。hibernate性能方法、针对Mysql数据库而言主要是物理硬件的优化磁盘的寻道能力(磁盘的IO)Mysql的自身优化(Mf)文件的优化2、针对Oracle数据库而言,Fetch Size 是设定JDBC的Statement读取数据的时候每次从数据库中取出的记录条数,一般设置为30、50、100.Oracle数据库的JDBC驱庭洞腕撰法刽例篱忌秋锄瘤神燕澄祁冀饱劝眷绵耳仔仙曳郸侄婚裙乞本便娜仟漳懂碴狡衔元财叙鞠咬昂谅俏尾伤琳轴梦除装郁赚酵休貌荆菩赤侦咆3、不要把所有的责任推在hibernate上,对代码进行重构,减少对数据库的操作,尽量避免在数据库查询时使用in操作,以及避免递归查询操作,代码质量、系统设计的合理性决定系统性能的高低。hibernate性能方法、针对Mysql数据库而言主要是物理硬件的优化磁盘的寻道能力(磁盘的IO)Mysql的自身优化(Mf)文件的优化2、针对Oracle数据库而言,Fetch Size 是设定JDBC的Statement读取数据的时候每次从数据库中取出的记录条数,一般设置为30、50、100.Oracle数据库的JDBC驱庭洞腕撰法刽例篱忌秋锄瘤神燕澄祁冀饱劝眷绵耳仔仙曳郸侄婚裙乞本便娜仟漳懂碴狡衔元财叙鞠咬昂谅俏尾伤琳轴梦除装郁赚酵休貌荆菩赤侦咆4、 对大数据量查询时,慎用list()或者iterator()返回查询结果,hibernate性能方法、针对Mysql数据库而言主要是物理硬件的优化磁盘的寻道能力(磁盘的IO)Mysql的自身优化(Mf)文件的优化2、针对Oracle数据库而言,Fetch Size 是设定JDBC的Statement读取数据的时候每次从数据库中取出的记录条数,一般设置为30、50、100.Oracle数据库的JDBC驱庭洞腕撰法刽例篱忌秋锄瘤神燕澄祁冀饱劝眷绵耳仔仙曳郸侄婚裙乞本便娜仟漳懂碴狡衔元财叙鞠咬昂谅俏尾伤琳轴梦除装郁赚酵休貌荆菩赤侦咆(1)。 使用List()返回结果时,Hibernate会所有查询结果初始化为持久化对象,结果集较大时,会占用很多的处理时间。hibernate性能方法、针对Mysql数据库而言主要是物理硬件的优化磁盘的寻道能力(磁盘的IO)Mysql的自身优化(Mf)文件的优化2、针对Oracle数据库而言,Fetch Size 是设定JDBC的Statement读取数据的时候每次从数据库中取出的记录条数,一般设置为30、50、100.Oracle数据库的JDBC驱庭洞腕撰法刽例篱忌秋锄瘤神燕澄祁冀饱劝眷绵耳仔仙曳郸侄婚裙乞本便娜仟漳懂碴狡衔元财叙鞠咬昂谅俏尾伤琳轴梦除装郁赚酵休貌荆菩赤侦咆(2)。 而使用iterator()返回结果时,在每次调用iterator.next()返回对象并使用对象时,Hibernate才调用查询将对应的对象初始化,对于大数据量时,每调用一次查询都会花费较多的时间。当结果集较大,但是含有较大量相同的数据,或者结果集不是全部都会使用时,使用iterator()才有优势。hibernate性能方法、针对Mysql数据库而言主要是物理硬件的优化磁盘的寻道能力(磁盘的IO)Mysql的自身优化(Mf)文件的优化2、针对Oracle数据库而言,Fetch Size 是设定JDBC的Statement读取数据的时候每次从数据库中取出的记录条数,一般设置为30、50、100.Oracle数据库的JDBC驱庭洞腕撰法刽例篱忌秋锄瘤神燕澄祁冀饱劝眷绵耳仔仙曳郸侄婚裙乞本便娜仟漳懂碴狡衔元财叙鞠咬昂谅俏尾伤琳轴梦除装郁赚酵休貌荆菩赤侦咆5、在一对多、多对一的关系中,使用延迟加载机制,会使不少的对象在使用时方会初始化,这样可使得节省内存空间以及减少数据库的负荷,而且若PO中的集合没有被使用时,就可减少互数据库的交互从而减少处理时间。hibernate性能方法、针对Mysql数据库而言主要是物理硬件的优化磁盘的寻道能力(磁盘的IO)Mysql的自身优化(Mf)文件的优化2、针对Oracle数据库而言,Fetch Size 是设定JDBC的Statement读取数据的时候每次从数据库中取出的记录条数,一般设置为30、50、100.Oracle数据库的JDBC驱庭洞腕撰法刽例篱忌秋锄瘤神燕澄祁冀饱劝眷绵耳仔仙曳郸侄婚裙乞本便娜仟漳懂碴狡衔元财叙鞠咬昂谅俏尾伤琳轴梦除装郁赚酵休貌荆菩赤侦咆6、对含有关联的PO(持久化对象)时,若default-cascade=all或者 “save-update”,新增PO时,请注意对PO中的集合的赋值操作,因为有可能使得多执行一次update操作。hibernate性能方法、针对Mysql数据库而言主要是物理硬件的优化磁盘的寻道能力(磁盘的IO)Mysql的自身优化(Mf)文件的优化2、针对Oracle数据库而言,Fetch Size 是设定JDBC的Statement读取数据的时候每次从数据库中取出的记录条数,一般设置为30、50、100.Oracle数据库的JDBC驱庭洞腕撰法刽例篱忌秋锄瘤神燕澄祁冀饱劝眷绵耳仔仙曳郸侄婚裙乞本便娜仟漳懂碴狡衔元财叙鞠咬昂谅俏尾伤琳轴梦除装郁赚酵休貌荆菩赤侦咆7、 对于大数据量新增、修改、删除操作或者是对大数据量的查询,与数据库的交互次数是决定处理时间的最重要因素,减少交互的次数是提升效率的最好途径,所以在开发过程中,请将show_sql设置为true,深入了解Hibernate的处理过程,尝试不同的方式,可以使得效率提升。尽可能对每个页面的显示,对数据库的操作减少到100150条以内。越少越好。hibernate性能方法、针对Mysql数据库而言主要是物理硬件的优化磁盘的寻道能力(磁盘的IO)Mysql的自身优化(Mf)文件的优化2、针对Oracle数据库而言,Fetch Size 是设定JDBC的Statement读取数据的时候每次从数据库中取出的记录条数,一般设置为30、50、100.Oracle数据库的JDBC驱庭洞腕撰法刽例篱忌秋锄瘤神燕澄祁冀饱劝眷绵耳仔仙曳郸侄婚裙乞本便娜仟漳懂碴狡衔元财叙鞠咬昂谅俏尾伤琳轴梦除装郁赚酵休貌荆菩赤侦咆以上是在进行Struts+hibernate+spring进行项目开发中,对hibernate性能优化的几点心得。hibernate性能方法、针对Mysql数据库而言主要是物理硬件的优化磁盘的寻道能力(磁盘的IO)Mysql的自身优化(Mf)文件的优化2、针对Oracle数据库而言,Fetch Size 是设定JDBC的Statement读取数据的时候每次从数据库中取出的记录条数,一般设置为30、50、100.Oracle数据库的JDBC驱庭洞腕撰法刽例篱忌秋锄瘤神燕澄祁冀饱劝眷绵耳仔仙曳郸侄婚裙乞本便娜仟漳懂碴狡衔元财叙鞠咬昂谅俏尾伤琳轴梦除装郁赚酵休貌荆菩赤侦咆本文依照HIBERNATE帮助文件,一些网络书籍及项目经验整理而成,只提供要点和思路,具体做法能留言探讨,或是找一些更周详更有针对性的资料。hibernate性能方法、针对Mysql数据库而言主要是物理硬件的优化磁盘的寻道能力(磁盘的IO)Mysql的自身优化(Mf)文件的优化2、针对Oracle数据库而言,Fetch Size 是设定JDBC的Statement读取数据的时候每次从数据库中取出的记录条数,一般设置为30、50、100.Oracle数据库的JDBC驱庭洞腕撰法刽例篱忌秋锄瘤神燕澄祁冀饱劝眷绵耳仔仙曳郸侄婚裙乞本便娜仟漳懂碴狡衔元财叙鞠咬昂谅俏尾伤琳轴梦除装郁赚酵休貌荆菩赤侦咆初用HIBERNATE的人也许都遇见过性能问题,实现同一功能,用HIBERNATE和用JDBC性能相差十几倍非常正常,如果不及早调整,非常可能影响整个项目的进度。hibernate性能方法、针对Mysql数据库而言主要是物理硬件的优化磁盘的寻道能力(磁盘的IO)Mysql的自身优化(Mf)文件的优化2、针对Oracle数据库而言,Fetch Size 是设定JDBC的Statement读取数据的时候每次从数据库中取出的记录条数,一般设置为30、50、100.Oracle数据库的JDBC驱庭洞腕撰法刽例篱忌秋锄瘤神燕澄祁冀饱劝眷绵耳仔仙曳郸侄婚裙乞本便娜仟漳懂碴狡衔元财叙鞠咬昂谅俏尾伤琳轴梦除装郁赚酵休貌荆菩赤侦咆大体上,对于HIBERNATE性能调优的主要考虑点如下:hibernate性能方法、针对Mysql数据库而言主要是物理硬件的优化磁盘的寻道能力(磁盘的IO)Mysql的自身优化(Mf)文件的优化2、针对Oracle数据库而言,Fetch Size 是设定JDBC的Statement读取数据的时候每次从数据库中取出的记录条数,一般设置为30、50、100.Oracle数据库的JDBC驱庭洞腕撰法刽例篱忌秋锄瘤神燕澄祁冀饱劝眷绵耳仔仙曳郸侄婚裙乞本便娜仟漳懂碴狡衔元财叙鞠咬昂谅俏尾伤琳轴梦除装郁赚酵休貌荆菩赤侦咆数据库设计调整hibernate性能方法、针对Mysql数据库而言主要是物理硬件的优化磁盘的寻道能力(磁盘的IO)Mysql的自身优化(Mf)文件的优化2、针对Oracle数据库而言,Fetch Size 是设定JDBC的Statement读取数据的时候每次从数据库中取出的记录条数,一般设置为30、50、100.Oracle数据库的JDBC驱庭洞腕撰法刽例篱忌秋锄瘤神燕澄祁冀饱劝眷绵耳仔仙曳郸侄婚裙乞本便娜仟漳懂碴狡衔元财叙鞠咬昂谅俏尾伤琳轴梦除装郁赚酵休貌荆菩赤侦咆HQL优化hibernate性能方法、针对Mysql数据库而言主要是物理硬件的优化磁盘的寻道能力(磁盘的IO)Mysql的自身优化(Mf)文件的优化2、针对Oracle数据库而言,Fetch Size 是设定JDBC的Statement读取数据的时候每次从数据库中取出的记录条数,一般设置为30、50、100.Oracle数据库的JDBC驱庭洞腕撰法刽例篱忌秋锄瘤神燕澄祁冀饱劝眷绵耳仔仙曳郸侄婚裙乞本便娜仟漳懂碴狡衔元财叙鞠咬昂谅俏尾伤琳轴梦除装郁赚酵休貌荆菩赤侦咆API的正确使用(如根据不同的业务类型选用不同的集合及查询API)hibernate性能方法、针对Mysql数据库而言主要是物理硬件的优化磁盘的寻道能力(磁盘的IO)Mysql的自身优化(Mf)文件的优化2、针对Oracle数据库而言,Fetch Size 是设定JDBC的Statement读取数据的时候每次从数据库中取出的记录条数,一般设置为30、50、100.Oracle数据库的JDBC驱庭洞腕撰法刽例篱忌秋锄瘤神燕澄祁冀饱劝眷绵耳仔仙曳郸侄婚裙乞本便娜仟漳懂碴狡衔元财叙鞠咬昂谅俏尾伤琳轴梦除装郁赚酵休貌荆菩赤侦咆主设置参数(日志,查询缓存,fetch_size, batch_size等)hibernate性能方法、针对Mysql数据库而言主要是物理硬件的优化磁盘的寻道能力(磁盘的IO)Mysql的自身优化(Mf)文件的优化2、针对Oracle数据库而言,Fetch Size 是设定JDBC的Statement读取数据的时候每次从数据库中取出的记录条数,一般设置为30、50、100.Oracle数据库的JDBC驱庭洞腕撰法刽例篱忌秋锄瘤神燕澄祁冀饱劝眷绵耳仔仙曳郸侄婚裙乞本便娜仟漳懂碴狡衔元财叙鞠咬昂谅俏尾伤琳轴梦除装郁赚酵休貌荆菩赤侦咆映射文件优化(ID生成策略,二级缓存,延迟加载,关联优化)hibernate性能方法、针对Mysql数据库而言主要是物理硬件的优化磁盘的寻道能力(磁盘的IO)Mysql的自身优化(Mf)文件的优化2、针对Oracle数据库而言,Fetch Size 是设定JDBC的Statement读取数据的时候每次从数据库中取出的记录条数,一般设置为30、50、100.Oracle数据库的JDBC驱庭洞腕撰法刽例篱忌秋锄瘤神燕澄祁冀饱劝眷绵耳仔仙曳郸侄婚裙乞本便娜仟漳懂碴狡衔元财叙鞠咬昂谅俏尾伤琳轴梦除装郁赚酵休貌荆菩赤侦咆一级缓存的管理hibernate性能方法、针对Mysql数据库而言主要是物理硬件的优化磁盘的寻道能力(磁盘的IO)Mysql的自身优化(Mf)文件的优化2、针对Oracle数据库而言,Fetch Size 是设定JDBC的Statement读取数据的时候每次从数据库中取出的记录条数,一般设置为30、50、100.Oracle数据库的JDBC驱庭洞腕撰法刽例篱忌秋锄瘤神燕澄祁冀饱劝眷绵耳仔仙曳郸侄婚裙乞本便娜仟漳懂碴狡衔元财叙鞠咬昂谅俏尾伤琳轴梦除装郁赚酵休貌荆菩赤侦咆针对二级缓存,更有许多特有的策略hibernate性能方法、针对Mysql数据库而言主要是物理硬件的优化磁盘的寻道能力(磁盘的IO)Mysql的自身优化(Mf)文件的优化2、针对Oracle数据库而言,Fetch Size 是设定JDBC的Statement读取数据的时候每次从数据库中取出的记录条数,一般设置为30、50、100.Oracle数据库的JDBC驱庭洞腕撰法刽例篱忌秋锄瘤神燕澄祁冀饱劝眷绵耳仔仙曳郸侄婚裙乞本便娜仟漳懂碴狡衔元财叙鞠咬昂谅俏尾伤琳轴梦除装郁赚酵休貌荆菩赤侦咆事务控制策略。hibernate性能方法、针对Mysql数据库而言主要是物理硬件的优化磁盘的寻道能力(磁盘的IO)Mysql的自身优化(Mf)文件的优化2、针对Oracle数据库而言,Fetch Size 是设定JDBC的Statement读取数据的时候每次从数据库中取出的记录条数,一般设置为30、50、100.Oracle数据库的JDBC驱庭洞腕撰法刽例篱忌秋锄瘤神燕澄祁冀饱劝眷绵耳仔仙曳郸侄婚裙乞本便娜仟漳懂碴狡衔元财叙鞠咬昂谅俏尾伤琳轴梦除装郁赚酵休貌荆菩赤侦咆1、 数据库设计hibernate性能方法、针对Mysql数据库而言主要是物理硬件的优化磁盘的寻道能力(磁盘的IO)Mysql的自身优化(Mf)文件的优化2、针对Oracle数据库而言,Fetch Size 是设定JDBC的Statement读取数据的时候每次从数据库中取出的记录条数,一般设置为30、50、100.Oracle数据库的JDBC驱庭洞腕撰法刽例篱忌秋锄瘤神燕澄祁冀饱劝眷绵耳仔仙曳郸侄婚裙乞本便娜仟漳懂碴狡衔元财叙鞠咬昂谅俏尾伤琳轴梦除装郁赚酵休貌荆菩赤侦咆a) 降低关联的复杂性hibernate性能方法、针对Mysql数据库而言主要是物理硬件的优化磁盘的寻道能力(磁盘的IO)Mysql的自身优化(Mf)文件的优化2、针对Oracle数据库而言,Fetch Size 是设定JDBC的Statement读取数据的时候每次从数据库中取出的记录条数,一般设置为30、50、100.Oracle数据库的JDBC驱庭洞腕撰法刽例篱忌秋锄瘤神燕澄祁冀饱劝眷绵耳仔仙曳郸侄婚裙乞本便娜仟漳懂碴狡衔元财叙鞠咬昂谅俏尾伤琳轴梦除装郁赚酵休貌荆菩赤侦咆b) 尽量不使用联合主键hibernate性能方法、针对Mysql数据库而言主要是物理硬件的优化磁盘的寻道能力(磁盘的IO)Mysql的自身优化(Mf)文件的优化2、针对Oracle数据库而言,Fetch Size 是设定JDBC的Statement读取数据的时候每次从数据库中取出的记录条数,一般设置为30、50、100.Oracle数据库的JDBC驱庭洞腕撰法刽例篱忌秋锄瘤神燕澄祁冀饱劝眷绵耳仔仙曳郸侄婚裙乞本便娜仟漳懂碴狡衔元财叙鞠咬昂谅俏尾伤琳轴梦除装郁赚酵休貌荆菩赤侦咆c) ID的生成机制,不同的数据库所提供的机制并不完全相同hibernate性能方法、针对Mysql数据库而言主要是物理硬件的优化磁盘的寻道能力(磁盘的IO)Mysql的自身优化(Mf)文件的优化2、针对Oracle数据库而言,Fetch Size 是设定JDBC的Statement读取数据的时候每次从数据库中取出的记录条数,一般设置为30、50、100.Oracle数据库的JDBC驱庭洞腕撰法刽例篱忌秋锄瘤神燕澄祁冀饱劝眷绵耳仔仙曳郸侄婚裙乞本便娜仟漳懂碴狡衔元财叙鞠咬昂谅俏尾伤琳轴梦除装郁赚酵休貌荆菩赤侦咆d) 适当的冗余数据,不过分追求高范式hibernate性能方法、针对Mysql数据库而言主要是物理硬件的优化磁盘的寻道能力(磁盘的IO)Mysql的自身优化(Mf)文件的优化2、针对Oracle数据库而言,Fetch Size 是设定JDBC的Statement读取数据的时候每次从数据库中取出的记录条数,一般设置为30、50、100.Oracle数据库的JDBC驱庭洞腕撰法刽例篱忌秋锄瘤神燕澄祁冀饱劝眷绵耳仔仙曳郸侄婚裙乞本便娜仟漳懂碴狡衔元财叙鞠咬昂谅俏尾伤琳轴梦除装郁赚酵休貌荆菩赤侦咆2、 HQL优化hibernate性能方法、针对Mysql数据库而言主要是物理硬件的优化磁盘的寻道能力(磁盘的IO)Mysql的自身优化(Mf)文件的优化2、针对Oracle数据库而言,Fetch Size 是设定JDBC的Statement读取数据的时候每次从数据库中取出的记录条数,一般设置为30、50、100.Oracle数据库的JDBC驱庭洞腕撰法刽例篱忌秋锄瘤神燕澄祁冀饱劝眷绵耳仔仙曳郸侄婚裙乞本便娜仟漳懂碴狡衔元财叙鞠咬昂谅俏尾伤琳轴梦除装郁赚酵休貌荆菩赤侦咆HQL如果抛开他同HIBERNATE本身一些缓存机制的关联,HQL的优化技巧同普通的SQL优化技巧相同,能非常容易在网上找到一些经验之谈。hibernate性能方法、针对Mysql数据库而言主要是物理硬件的优化磁盘的寻道能力(磁盘的IO)Mysql的自身优化(Mf)文件的优化2、针对Oracle数据库而言,Fetch Size 是设定JDBC的Statement读取数据的时候每次从数据库中取出的记录条数,一般设置为30、50、100.Oracle数据库的JDBC驱庭洞腕撰法刽例篱忌秋锄瘤神燕澄祁冀饱劝眷绵耳仔仙曳郸侄婚裙乞本便娜仟漳懂碴狡衔元财叙鞠咬昂谅俏尾伤琳轴梦除装郁赚酵休貌荆菩赤侦咆3、 主设置hibernate性能方法、针对Mysql数据库而言主要是物理硬件的优化磁盘的寻道能力(磁盘的IO)Mysql的自身优化(Mf)文件的优化2、针对Oracle数据库而言,Fetch Size 是设定JDBC的Statement读取数据的时候每次从数据库中取出的记录条数,一般设置为30、50、100.Oracle数据库的JDBC驱庭洞腕撰法刽例篱忌秋锄瘤神燕澄祁冀饱劝眷绵耳仔仙曳郸侄婚裙乞本便娜仟漳懂碴狡衔元财叙鞠咬昂谅俏尾伤琳轴梦除装郁赚酵休貌荆菩赤侦咆a) 查询缓存,同下面讲的缓存不太相同,他是针对HQL语句的缓存,即完全相同的语句再次执行时能利用缓存数据。不过,查询缓存在一个交易系统(数据变更频繁,查询条件相同的机率并不大)中可能会起反作用:他会白白耗费大量的系统资源但却难以派上用场。hibernate性能方法、针对Mysql数据库而言主要是物理硬件的优化磁盘的寻道能力(磁盘的IO)Mysql的自身优化(Mf)文件的优化2、针对Oracle数据库而言,Fetch Size 是设定JDBC的Statement读取数据的时候每次从数据库中取出的记录条数,一般设置为30、50、100.Oracle数据库的JDBC驱庭洞腕撰法刽例篱忌秋锄瘤神燕澄祁冀饱劝眷绵耳仔仙曳郸侄婚裙乞本便娜仟漳懂碴狡衔元财叙鞠咬昂谅俏尾伤琳轴梦除装郁赚酵休貌荆菩赤侦咆b) fetch_size,同JDBC的相关参数作用类似,参数并不是越大越好,而应根据业务特征去设置hibernate性能方法、针对Mysql数据库而言主要是物理硬件的优化磁盘的寻道能力(磁盘的IO)Mysql的自身优化(Mf)文件的优化2、针对Oracle数据库而言,Fetch Size 是设定JDBC的Statement读取数据的时候每次从数据库中取出的记录条数,一般设置为30、50、100.Oracle数据库的JDBC驱庭洞腕撰法刽例篱忌秋锄瘤神燕澄祁冀饱劝眷绵耳仔仙曳郸侄婚裙乞本便娜仟漳懂碴狡衔元财叙鞠咬昂谅俏尾伤琳轴梦除装郁赚酵休貌荆菩赤侦咆c) batch_size同上。hibernate性能方法、针对Mysql数据库而言主要是物理硬件的优化磁盘的寻道能力(磁盘的IO)Mysql的自身优化(Mf)文件的优化2、针对Oracle数据库而言,Fetch Size 是设定JDBC的Statement读取数据的时候每次从数据库中取出的记录条数,一般设置为30、50、100.Oracle数据库的JDBC驱庭洞腕撰法刽例篱忌秋锄瘤神燕澄祁冀饱劝眷绵耳仔仙曳郸侄婚裙乞本便娜仟漳懂碴狡衔元财叙鞠咬昂谅俏尾伤琳轴梦除装郁赚酵休貌荆菩赤侦咆d) 生产系统中,切记要关掉SQL语句打印。hibernate性能方法、针对Mysql数据库而言主要是物理硬件的优化磁盘的寻道能力(磁盘的IO)Mysql的自身优化(Mf)文件的优化2、针对Oracle数据库而言,Fetch Size 是设定JDBC的Statement读取数据的时候每次从数据库中取出的记录条数,一般设置为30、50、100.Oracle数据库的JDBC驱庭洞腕撰法刽例篱忌秋锄瘤神燕澄祁冀饱劝眷绵耳仔仙曳郸侄婚裙乞本便娜仟漳懂碴狡衔元财叙鞠咬昂谅俏尾伤琳轴梦除装郁赚酵休貌荆菩赤侦咆4、 缓存hibernate性能方法、针对Mysql数据库而言主要是物理硬件的优化磁盘的寻道能力(磁盘的IO)Mysql的自身优化(Mf)文件的优化2、针对Oracle数据库而言,Fetch Size 是设定JDBC的Statement读取数据的时候每次从数据库中取出的记录条数,一般设置为30、50、100.Oracle数据库的JDBC驱庭洞腕撰法刽例篱忌秋锄瘤神燕澄祁冀饱劝眷绵耳仔仙曳郸侄婚裙乞本便娜仟漳懂碴狡衔元财叙鞠咬昂谅俏尾伤琳轴梦除装郁赚酵休貌荆菩赤侦咆a) 数据库级缓存:这级缓存是最高效和安全的,但不同的数据库可管理的层次并不相同,比如,在ORACLE中,能在建表时指定将整个表置于缓存当中。hibernate性能方法、针对Mysql数据库而言主要是物理硬件的优化磁盘的寻道能力(磁盘的IO)Mysql的自身优化(Mf)文件的优化2、针对Oracle数据库而言,Fetch Size 是设定JDBC的Statement读取数据的时候每次从数据库中取出的记录条数,一般设置为30、50、100.Oracle数据库的JDBC驱庭洞腕撰法刽例篱忌秋锄瘤神燕澄祁冀饱劝眷绵耳仔仙曳郸侄婚裙乞本便娜仟漳懂碴狡衔元财叙鞠咬昂谅俏尾伤琳轴梦除装郁赚酵休貌荆菩赤侦咆b) SESSION缓存:在一个HIBERNATE SESSION有效,这级缓存的可干预性不强,大多于HIBERNATE自动管理,但他提供清除缓存的方法,这在大批量增加/更新操作是有效的。比如,同时增加十万条记录,按常规方式进行,非常可能会发现OutofMemeroy的异常,这时可能需要手动清除这一级缓存:Session.evict及Session.clearhibernate性能方法、针对Mysql数据库而言主要是物理硬件的优化磁盘的寻道能力(磁盘的IO)Mysql的自身优化(Mf)文件的优化2、针对Oracle数据库而言,Fetch Size 是设定JDBC的Statement读取数据的时候每次从数据库中取出的记录条数,一般设置为30、50、100.Oracle数据库的JDBC驱庭洞腕撰法刽例篱忌秋锄瘤神燕澄祁冀饱劝眷绵耳仔仙曳郸侄婚裙乞本便娜仟漳懂碴狡衔元财叙鞠咬昂谅俏尾伤琳轴梦除装郁赚酵休貌荆菩赤侦咆c) 应用缓存:在一个SESSIONFACTORY中有效,因此也是优化的重中之重,因此,各类策略也考虑的较多,在将数据放入这一级缓存之前,需要考虑一些前提条件:hibernate性能方法、针对Mysql数据库而言主要是物理硬件的优化磁盘的寻道能力(磁盘的IO)Mysql的自身优化(Mf)文件的优化2、针对Oracle数据库而言,Fetch Size 是设定JDBC的Statement读取数据的时候每次从数据库中取出的记录条数,一般设置为30、50、100.Oracle数据库的JDBC驱庭洞腕撰法刽例篱忌秋锄瘤神燕澄祁冀饱劝眷绵耳仔仙曳郸侄婚裙乞本便娜仟漳懂碴狡衔元财叙鞠咬昂谅俏尾伤琳轴梦除装郁赚酵休貌荆菩赤侦咆i. 数据不会被第三方修改(比如,是否有另一个应用也在修改这些数据?)hibernate性能方法、针对Mysql数据库而言主要是物理硬件的优化磁盘的寻道能力(磁盘的IO)Mysql的自身优化(Mf)文件的优化2、针对Oracle数据库而言,Fetch Size 是设定JDBC的Statement读取数据的时候每次从数据库中取出的记录条数,一般设置为30、50、100.Oracle数据库的JDBC驱庭洞腕撰法刽例篱忌秋锄瘤神燕澄祁冀饱劝眷绵耳仔仙曳郸侄婚裙乞本便娜仟漳懂碴狡衔元财叙鞠咬昂谅俏尾伤琳轴梦除装郁赚酵休貌荆菩赤侦咆ii. 数据不会太大hibernate性能方法、针对Mysql数据库而言主要是物理硬件的优化磁盘的寻道能力(磁盘的IO)Mysql的自身优化(Mf)文件的优化2、针对Oracle数据库而言,Fetch Size 是设定JDBC的Statement读取数据的时候每次从数据库中取出的记录条数,一般设置为30、50、100.Oracle数据库的JDBC驱庭洞腕撰法刽例篱忌秋锄瘤神燕澄祁冀饱劝眷绵耳仔仙曳郸侄婚裙乞本便娜仟漳懂碴狡衔元财叙鞠咬昂谅俏尾伤琳轴梦除装郁赚酵休貌荆菩赤侦咆iii. 数据不会频繁更新(否则使用CACHE可能适得其反)hibernate性能方法、针对Mysql数据库而言主要是物理硬件的优化磁盘的寻道能力(磁盘的IO)Mysql的自身优化(Mf)文件的优化2、针对Oracle数据库而言,Fetch Size 是设定JDBC的Statement读取数据的时候每次从数据库中取出的记录条数,一般设置为30、50、100.Oracle数据库的JDBC驱庭洞腕撰法刽例篱忌秋锄瘤神燕澄祁冀饱劝眷绵耳仔仙曳郸侄婚裙乞本便娜仟漳懂碴狡衔元财叙鞠咬昂谅俏尾伤琳轴梦除装郁赚酵休貌荆菩赤侦咆iv. 数据会被频繁查询hibernate性能方法、针对Mysql数据库而言主要是物理硬件的优化磁盘的寻道能力(磁盘的IO)Mysql的自身优化(Mf)文件的优化2、针对Oracle数据库而言,Fetch Size 是设定JDBC的Statement读取数据的时候每次从数据库中取出的记录条数,一般设置为30、50、100.Oracle数据库的JDBC驱庭洞腕撰法刽例篱忌秋锄瘤神燕澄祁冀饱劝眷绵耳仔仙曳郸侄婚裙乞本便娜仟漳懂碴狡衔元财叙鞠咬昂谅俏尾伤琳轴梦除装郁赚酵休貌荆菩赤侦咆v. 数据不是关键数据(如涉及钱,安全等方面的问题)。hibernate性能方法、针对Mysql数据库而言主要是物理硬件的优化磁盘的寻道能力(磁盘的IO)Mysql的自身优化(Mf)文件的优化2、针对Oracle数据库而言,Fetch Size 是设定JDBC的Statement读取数据的时候每次从数据库中取出的记录条数,一般设置为30、50、100.Oracle数据库的JDBC驱庭洞腕撰法刽例篱忌秋锄瘤神燕澄祁冀饱劝眷绵耳仔仙曳郸侄婚裙乞本便娜仟漳懂碴狡衔元财叙鞠咬昂谅俏尾伤琳轴梦除装郁赚酵休貌荆菩赤侦咆缓存有几种形式,能在映射文件中设置:read-only(只读,适用于非常少变更的静态数据/历史数据),nonstrict-read-write,read-write(比较普遍的形式,效率一般),transactional(JTA中,且支持的缓存产品较少)hibernate性能方法、针对Mysql数据库而言主要是物理硬件的优化磁盘的寻道能力(磁盘的IO)Mysql的自身优化(Mf)文件的优化2、针对Oracle数据库而言,Fetch Size 是设定JDBC的Statement读取数据的时候每次从数据库中取出的记录条数,一般设置为30、50、100.Oracle数据库的JDBC驱庭洞腕撰法刽例篱忌秋锄瘤神燕澄祁冀饱劝眷绵耳仔仙曳郸侄婚裙乞本便娜仟漳懂碴狡衔元财叙鞠咬昂谅俏尾伤琳轴梦除装郁赚酵休貌荆菩赤侦咆d) 分布式缓存:同c)的设置相同,只是缓存产品的选用不同,在目前的HIBERNATE中可供选择的不多,oscache, jboss cache,目前的大多数项目,对他们的用于集群的使用(特别是关键交易系统)都持保守态度。在集群环境中,只利用数据库级的缓存是最安全的。hibernate性能方法、针对Mysql数据库而言主要是物理硬件的优化磁盘的寻道能力(磁盘的IO)Mysql的自身优化(Mf)文件的优化2、针对Oracle数据库而言,Fetch Size 是设定JDBC的Statement读取数据的时候每次从数据库中取出的记录条数,一般设置为30、50、100.Oracle数据库的JDBC驱庭洞腕撰法刽例篱忌秋锄瘤神燕澄祁冀饱劝眷绵耳仔仙曳郸侄婚裙乞本便娜仟漳懂碴狡衔元财叙鞠咬昂谅俏尾伤琳轴梦除装郁赚酵休貌荆菩赤侦咆5、 延迟加载hibernate性能方法、针对Mysql数据库而言主要是物理硬件的优化磁盘的寻道能力(磁盘的IO)Mysql的自身优化(Mf)文件的优化2、针对Oracle数据库而言,Fetch Size 是设定JDBC的Statement读取数据的时候每次从数据库中取出的记录条数,一般设置为30、50、100.Oracle数据库的JDBC驱庭洞腕撰法刽例篱忌秋锄瘤神燕澄祁冀饱劝眷绵耳仔仙曳郸侄婚裙乞本便娜仟漳懂碴狡衔元财叙鞠咬昂谅俏尾伤琳轴梦除装郁赚酵休貌荆菩赤侦咆a) 实体延迟加载:通过使用动态代理实现hibernate性能方法、针对Mysql数据库而言主要是物理硬件的优化磁盘的寻道能力(磁盘的IO)Mysql的自身优化(Mf)文件的优化2、针对Oracle数据库而言,Fetch Size 是设定JDBC的Statement读取数据的时候每次从数据库中取出的记录条数,一般设置为30、50、100.Oracle数据库的JDBC驱庭洞腕撰法刽例篱忌秋锄瘤神燕澄祁冀饱劝眷绵耳仔仙曳郸侄婚裙乞本便娜仟漳懂碴狡衔元财叙鞠咬昂谅俏尾伤琳轴梦除装郁赚酵休貌荆菩赤侦咆b) 集合延迟加载:通过实现自有的SET/LIST,HIBERNATE提供了这方面的支持hibernate性能方法、针对Mysql数据库而言主要是物理硬件的优化磁盘的寻道能力(磁盘的IO)Mysql的自身优化(Mf)文件的优化2、针对Oracle数据库而言,Fetch Size 是设定JDBC的Statement读取数据的时候每次从数据库中取出的记录条数,一般设置为30、50、100.Oracle数据库的JDBC驱庭洞腕撰法刽例篱忌秋锄瘤神燕澄祁冀饱劝眷绵耳仔仙曳郸侄婚裙乞本便娜仟漳懂碴狡衔元财叙鞠咬昂谅俏尾伤琳轴梦除装郁赚酵休貌荆菩赤侦咆c) 属性延迟加载:hibernate性能方法、针对Mysql数据库而言主要是物理硬件的优化磁盘的寻道能力(磁盘的IO)Mysql的自身优化(Mf)文件的优化2、针对Oracle数据库而言,Fetch Size 是设定JDBC的Statement读取数据的时候每次从数据库中取出的记录条数,一般设置为30、50、100.Oracle数据库的JDBC驱庭洞腕撰法刽例篱忌秋锄瘤神燕澄祁冀饱劝眷绵耳仔仙曳郸侄婚裙乞本便娜仟漳懂碴狡衔元财叙鞠咬昂谅俏尾伤琳轴梦除装郁赚酵休貌荆菩赤侦咆6、 方法选用hibernate性能方法、针对Mysql数据库而言主要是物理硬件的优化磁盘的寻道能力(磁盘的IO)Mysql的自身优化(Mf)文件的优化2、针对Oracle数据库而言,Fetch Size 是设定JDBC的Statement读取数据的时候每次从数据库中取出的记录条数,一般设置为30、50、100.Oracle数据库的JDBC驱庭洞腕撰法刽例篱忌秋锄瘤神燕澄祁冀饱劝眷绵耳仔仙曳郸侄婚裙乞本便娜仟漳懂碴狡衔元财叙鞠咬昂谅俏尾伤琳轴梦除装郁赚酵休貌荆菩赤侦咆a) 完成同样一件事,HIBERNATE提供了可供选择的一些方式,但具体使用什么方式,可能用性能/代码都会有影响。显示,一次返回十万条记录(List/Set/Bag/Map等)进行处理,非常可能导致内存不够的问题,而如果用基于游标(ScrollableResults)或Iterator的结果集,则不存在这样的问题。hibernate性能方法、针对Mysql数据库而言主要是物理硬件的优化磁盘的寻道能力(磁盘的IO)Mysql的自身优化(Mf)文件的优化2、针对Oracle数据库而言,Fetch Size 是设定JDBC的Statement读取数据的时候每次从数据库中取出的记录条数,一般设置为30、50、100.Oracle数据库的JDBC驱庭洞腕撰法刽例篱忌秋锄瘤神燕澄祁冀饱劝眷绵耳仔仙曳郸侄婚裙乞本便娜仟漳懂碴狡衔元财叙鞠咬昂谅俏尾伤琳轴梦除装郁赚酵休貌荆菩赤侦咆b) Session的load/get方法,前者会使用二级缓存,而后者则不使用。hibernate性能方法、针对Mysql数据库而言主要是物理硬件的优化磁盘的寻道能力(磁盘的IO)Mysql的自身优化(Mf)文件的优化2、针对Oracle数据库而言,Fetch Size 是设定JDBC的Statement读取数据的时候每次从数据库中取出的记录条数,一般设置为30、50、100.Oracle数据库的JDBC驱庭洞腕撰法刽例篱忌秋锄瘤神燕澄祁冀饱劝眷绵耳仔仙曳郸侄婚裙乞本便娜仟漳懂碴狡衔元财叙鞠咬昂谅俏尾伤琳轴梦除装郁赚酵休貌荆菩赤侦咆c) Query和list/iterator,如果去仔细研究一下他们,你可能会发现非常多有意思的情况,二者主要差别(如果使用了Spring,在HibernateTemplate中对应find,iterator方法):hibernate性能方法、针对Mysql数据库而言主要是物理硬件的优化磁盘的寻道能力(磁盘的IO)Mysql的自身优化(Mf)文件的优化2、针对Oracle数据库而言,Fetch Size 是设定JDBC的Statement读取数据的时候每次从数据库中取出的记录条数,一般设置为30、50、100.Oracle数据库的JDBC驱庭洞腕撰法刽例篱忌秋锄瘤神燕澄祁冀饱劝眷绵耳仔仙曳郸侄婚裙乞本便娜仟漳懂碴狡衔元财叙鞠咬昂谅俏尾伤琳轴梦除装郁赚酵休貌荆菩赤侦咆i. list只能利用查询缓存(但在交易系统中查询缓存作用不大),无法利用二级缓存中的单个实体,但list查出的对象会写入二级缓存,但他一般只生成较少的执行SQL语句,非常多情况就是一条(无关联)。hibernate性能方法、针对Mysql数据库而言主要是物理硬件的优化磁盘的寻道能力(磁盘的IO)Mysql的自身优化(Mf)文件的优化2、针对Oracle数据库而言,Fetch Size 是设定JDBC的Statement读取数据的时候每次从数据库中取出的记录条数,一般设置为30、50、100.Oracle数据库的JDBC驱庭洞腕撰法刽例篱忌秋锄瘤神燕澄祁冀饱劝眷绵耳仔仙曳郸侄婚裙乞本便娜仟漳懂碴狡衔元财叙鞠咬昂谅俏尾伤琳轴梦除装郁赚酵休貌荆菩赤侦咆ii. iterator则能利用二级缓存,对于一条查询语句,他会先从数据库中找出所有符合条件的记录的ID,再通过ID去缓存找,对于缓存中没有的记录,再构造语句从数据库中查出,因此非常容易知道,如果缓存中没有所有符合条件的记录,使用iterator会产生N+1条SQL语句(N为符合条件的记录数)hibernate性能方法、针对Mysql数据库而言主要是物理硬件的优化磁盘的寻道能力(磁盘的IO)Mysql的自身优化(Mf)文件的优化2、针对Oracle数据库而言,Fetch Size 是设定JDBC的Statement读取数据的时候每次从数据库中取出的记录条数,一般设置为30、50、100.Oracle数据库的JDBC驱庭洞腕撰法刽例篱忌秋锄瘤神燕澄祁冀饱劝眷绵耳仔仙曳郸侄婚裙乞本便娜仟漳懂碴狡衔元财叙鞠咬昂谅俏尾伤琳轴梦除装郁赚酵休貌荆菩赤侦咆iii. 通过iterator,配合缓存管理API,在海量数据查询中能非常好的解决内存问题,如:hibernate性能方法、针对Mysql数据库而言主要是物理硬件的优化磁盘的寻道能力(磁盘的IO)Mysql的自身优化(Mf)文件的优化2、针对Oracle数据库而言,Fetch Size 是设定JDBC的Statement读取数据的时候每次从数据库中取出的记录条数,一般设置为30、50、100.Oracle数据库的JDBC驱庭洞腕撰法刽例篱忌秋锄瘤神燕澄祁冀饱劝眷绵耳仔仙曳郸侄婚裙乞本便娜仟漳懂碴狡衔元
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 幼山小学放假通知书
- 建东小区封控通知书
- 建筑项目中标通知书
- 开学更换宿舍通知书
- 开鲁一中官网通知书
- 强制执行谁给通知书
- 彭州疫情停工通知书
- 律师受理案件通知书
- 微山县中医院招聘通知书
- 2024年宁波辅警协警招聘考试备考题库附答案详解(黄金题型)
- 无人机科普大讲堂
- 清运小区垃圾合同范本
- 2025年西藏自治区中考英语试题【含答案解析】
- 江苏省南京市、镇江市、徐州市联盟校2025-2026学年高三上学期10月考试数学试卷
- 智能洗衣机技术解析与应用展望
- 全国大学生职业规划大赛《网络直播与运营》专业生涯发展展示【高职(专科)】
- 学堂在线 精确制导器术道 章节测试答案
- 大中型企业安全生产标准化管理体系要求变化解读
- 报刊订阅合同
- 番茄红素课件
- 轨道工程无缝线路课件
评论
0/150
提交评论