http://www.ucai8.com/viewNote.do?noteId=402881851e2c5780011e350260e801ca
前几天查看后台的日志时,发现常出现Hibernate的警告信息:
WARN (org.hibernate.hql.ast.QueryTranslatorImpl:328) - firstResult/maxResults specified with collection fetch; applying in memory!
在中文Google上搜了搜,没有找到什么有用的信息,之后在英文的Google上搜了一下,出了很多介绍这方面的文章,写的最好的,我觉得是这篇文章,有测试用例来说明一切:
我大概总结一下:在查询一对多关系数据,后面会用到“多”的数据。数据量比较大的时候(从数据库取500条记录以上),用fetch join比较好,Hibernate官方的文档也说了,它会只执行1条SQL语句。但是如果用分页查询时,比如一次才取50条数据时,不用fetch join要快,因为如果用了fetch join后,hibernate并不能在数据库进行分页,会把所有数据库到内存中,然后分页,当然性能 会差的很远(所以会报一个前面我写的警告信息)。这时用延时加载比如快,这时还可以更加优化,通过指定batch-size的大小,来批量从数据中读。
通过自己的测试,光是Hibernate发出的SQL语句就少了很多。之前我用Fetch join用分布时有200多条Sql语句产生,不用fetch join时只有23条了,再加了batch-size优化后只有16条sql了。所以要对不同的情况,进行不同的优化,才能让性能最佳!
分享到:
相关推荐
Hibernate性能调优
珍藏的hibernate性能优化,如果对hibernate进行优化,很详细,是工作和面试的好助手
hibernate 调优
做开发这么多年,目前对hibernate的性能调优,也还没有过一个系统全面的审视,在hibernate性能上,真要出什么问题,也是碰到问题再解决问题,下文系统的整理了使用orm开发时性能调优的方方面面
Hibernate性能优化Hibernate性能优化Hibernate性能优化Hibernate性能优化Hibernate性能优化
设计好的hibernate与设计不好的hibernate性能差别巨大,如何改善hibernate的性能是合理使用hibernate的关键
hibernate的使用心得:HQL查询的技巧及优化策略分析。
Hibernate学习心得 Hibernate学习心得 Hibernate学习心得 Hibernate学习心得 Hibernate学习心得
Hibernate性能优化研究.pdf..............
Hibernate提升性能Hibernate提升性能Hibernate提升性能Hibernate提升性能
Hibernate性能优化策略.详细描述了java性能优化的各种策略高清
详见博客 http://blog.csdn.net/hanlin0605/article/details/54834717
中取出的记录条数,一般设置为30、50、100.Oracle数据库的JDBC驱动默认的Fetch Size=15,设置Fetch Size设置为:30、50,性能会有明显提升,如果继续增大,超出100,性能提升不明显,反而会消耗内存。 即在...
Hibernate学习心得源码 Hibernate学习心得源码 Hibernate学习心得源码 Hibernate学习心得源码 Hibernate学习心得源码