银色幻想
导航
BlogJava
首页
新随笔
联系
聚合
管理
<
2006年4月
>
日
一
二
三
四
五
六
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
留言簿
(2)
给我留言
查看公开留言
查看私人留言
文章分类
(3)
其他文章(3)
(rss)
收藏夹
(34)
收藏夹(34)
(rss)
随笔档案
(23)
2007年5月 (2)
2006年11月 (1)
2006年10月 (1)
2006年7月 (1)
2006年6月 (1)
2006年5月 (1)
2006年4月 (4)
2006年3月 (3)
2006年2月 (9)
文章档案
(3)
2006年2月 (3)
相册
相册
阅读排行榜
1. hibernate的性能优化(2053)
2. SQL查询优化(1419)
3. Struts+Spring+Hibernate内存泄漏(1318)
4. Jakarta简介(652)
5. Linux下的打包压缩(475)
评论排行榜
1. SQL查询优化(1)
2. EJB笔记(0)
3. J2EE工程实现中常见安全问题解决对策(0)
4. 正则表达式(0)
5. hibernate的性能优化(0)
常用链接
我的随笔
我的评论
我的参与
最新评论
统计
随笔 - 24
文章 - 3
评论 - 2
引用 - 0
积分与排名
积分 - 13719
排名 - 2076
学习交流
BEA
IBM
java开源
java视线
Jdon
Linux技术中坚站
Matrix
Robbin-JavaEye
SpringFramework中文论坛
TSS
江南白衣-SpringSide
满江红战记
最新评论
1. re: SQL查询优化[未登录]
SQL查询优化应注意哪些?
--飘雪
hibernate的性能优化
1、针对oracle数据库而言,Fetch Size 是设定JDBC的Statement读取数据的时候每次从数据库中取出的记录条数,一般设置为30、50、100。Oracle数据库的JDBC驱动默认的Fetch Size=15,设置Fetch Size设置为:30、50,性能会有明显提升,如果继续增大,超出100,性能提升不明显,反而会消耗内存。
即在hibernate配制文件中进行配制:
1 <property name="hibernateProperties">
2 <props>
3 <prop key="hibernate.dialect">org.hibernate.dialect.Oracle9Dialect</prop>
4 <prop key="hibernate.show_sql">false</prop>
5 <!-- Create/update the database tables automatically when the JVM starts up
6 <prop key="hibernate.hbm2ddl.auto">update</prop> -->
7 <!-- Turn batching off for better error messages under PostgreSQL
8 <prop key="hibernate.jdbc.batch_size">100</prop> -->
9 <prop key="hibernate.jdbc.batch_size">50</prop>
10 </props>
11 </property>Fetch Size设的越大,读数据库的次数越少,速度越快;Fetch Size越小,读数据库的次数越多,速度越慢。
2、如果是超大的系统,建议生成htm文件。加快页面提升速度。
3、不要把所有的责任推在hibernate上,对代码进行重构,减少对数据库的操作,尽量避免在数据库查询时使用in操作,以及避免递归查询操作,代码质量、系统设计的合理性决定系统性能的高低。
4、 对大数据量查询时,慎用list()或者iterator()返回查询结果,
(1). 使用List()返回结果时,Hibernate会所有查询结果初始化为持久化对象,结果集较大时,会占用很多的处理时间。
(2). 而使用iterator()返回结果时,在每次调用iterator.next()返回对象并使用对象时,Hibernate才调用查询将对应的对象初始化,对于大数据量时,每调用一次查询都会花费较多的时间。当结果集较大,但是含有较大量相同的数据,或者结果集不是全部都会使用时,使用iterator()才有优势。
5、在一对多、多对一的关系中,使用延迟加载机制,会使不少的对象在使用时方会初始化,这样可使得节省内存空间以及减少数据库的负荷,而且若PO中的集合没有被使用时,就可减少互数据库的交互从而减少处理时间。
6、对含有关联的PO(持久化对象)时,若default-cascade="all"或者 “save-update”,新增PO时,请注意对PO中的集合的赋值操作,因为有可能使得多执行一次update操作。
7、 对于大数据量新增、修改、删除操作或者是对大数据量的查询,与数据库的交互次数是决定处理时间的最重要因素,减少交互的次数是提升效率的最好途径,所以在开发过程中,请将show_sql设置为true,深入了解Hibernate的处理过程,尝试不同的方式,可以使得效率提升。尽可能对每个页面的显示,对数据库的操作减少到100----150条以内。越少越好。
posted on 2006-04-22 16:31
银色幻想
阅读(2053)
评论(0)
编辑
收藏
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
知识库
C++博客
博问
管理
Powered by:
BlogJava
Copyright © 银色幻想