文档章节

两种极端:频繁的查询和巨大的结果集

猪刚烈
 猪刚烈
发布于 2014/10/12 11:40
字数 584
阅读 16
收藏 0

写到这篇文章时,我们可以对Hibernate的性能调优策略做一个宏观的剖析了。当系统访问一个实体时,Hibernate会到数据库中提取相应数据封装成实体供程序使用,但大多数情况下问题并不是这样简单。对象模型由很多实体和值对象组成,它们之间相互依赖,构成一张复杂的“对象图”。从一个指定的对象开始,我们可以导航到与这个对象有直接或间接关系的任何对象上。再回到我们一开始的问题:你怎样从数据库中重建这个对象?我们很容易想到两种基本的策略:

策略1:开始时只加载这个对象的基本数据。当要从这个对象导航到其他对象时,再将目标对象从数据库中加载出来。这就是hibernate中的lazy loading.这个策略可以避免一次性载入过多数据,代价却是需要频繁访问数据库。这就是“过多查询”的问题。这种情况典型的例子是N+1次查询问题(参考JPwH13.2.5)。

策略2:一开始就将该对象和它的所有并联对象一次性查出。这就是hibernate中的eager fetch.这个策略消除了频繁访问数据库的问题,但它会加载太多的数据。它的查询结果是一个巨大的笛卡尔积!(至于为什么是笛卡尔积请参考http://blog.csdn.net/bluishglc/archive/2010/05/09/5571403.aspx,简单说:当这个对象有两个以上的关联集合时,查询结果就必然是一个笛卡尔积了)并且可能很多数据我们都不会用到。笛卡尔积问题同样参考JPwH13.2.5。

在这两种基本策略,也是两种极端的情况下:我们通过Hibernate进行的性能调优无非就是要在这两者之间取得一个平衡:使用最少的查询得到必需的数据,不加载本次用例(use case)使用不到的对象!这就需要我们为每个用例制定hibernate动态抓取策略也可以叫抓取计划来实现!

 

本文转载自:http://blog.csdn.net/bluishglc/article/details/5571527

共有 人打赏支持
猪刚烈
粉丝 22
博文 708
码字总数 110
作品 1
海淀
程序员
私信 提问
T-SQL基础(二)之关联查询

在上篇博文中介绍了T-SQL查询的基础知识,本篇主要介绍稍微复杂的查询形式。 表运算符 表运算符的作用是把为其提供的表作为输入,经过逻辑查询处理,返回一个表结果。SQL Server支持四个表运...

雪飞鸿
2018/11/14
0
0
MySQL 对于大表(千万级),要怎么优化

提到优化,先要确定出现的问题,是存储引擎选择问题,还是sql语句使用问题(如:索引)亦或者是单一存储服务器对于千万级别的数据力不从心。 解决方法: 1、根据不同业务选用不同存储引擎,虽...

八戒_o
2016/01/07
409
0
Optimization Algorithms

机器学习应用是一个高度依赖经验并伴随着大量迭代的过程——这一句话不得不同意,经验更重要,深有体会。你需要训练诸多模型才能找到合适的那一个。深度学习没有在大数据领域发挥最大的效果,...

徐凯_xp
2017/12/22
0
0
[玩转MySQL之四]MySQL缓存机制

一、前言 在当今的各种系统中,缓存是对系统性能优化的重要手段。MySQL Query Cache(MySQL查询缓存)在MySQL Server中是默认打开的,但是网上各种资料以及有经验的DBA都建议生产环境中把MySQL...

沈欧邦
2018/09/30
0
0
头一回见!提升10倍效率,阿里给业务校验平台插上了AI的翅膀

摘要: 实时业务校验平台作为阿里集团老牌的业务审计系统,覆盖了集团绝大部分的业务对账场景,在线上问题及时发现以及减少集团资损上发挥着巨大作用,保障了各个系统的业务稳定性。本文主要...

中间件小哥
2018/12/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

nginx日志自动切割

1.日志配置(Nginx 日志) access.log----记录哪些用户,哪些页面以及用户浏览器,IP等访问信息;error.log------记录服务器错误的日志 #配置日志存储路径:location / {      a...

em_aaron
昨天
1
0
java 反射

基本概念 RTTI,即Run-Time Type Identification,运行时类型识别。RTTI能在运行时就能够自动识别每个编译时已知的类型。   要想理解反射的原理,首先要了解什么是类型信息。Java让我们在运...

细节探索者
昨天
1
0
推荐转载连接

https://www.cnblogs.com/ysocean/p/7409779.html#_label0

小橙子的曼曼
昨天
3
0
雷军亲自打造的套餐了解下:用多少付多少

12月28日消息,小米科技创始人兼CEO雷军微博表示,小米移动任我行套餐方案,原则上就是明明白白消费,用多少付多少,不用不花钱!上网、电话和短信都是一毛钱,上网0.1元/M,电话0.1元/分钟,...

linuxCool
昨天
6
0
协议简史:如何学习网络协议?

大学时,学到网络协议的7层模型时,老师教了大家一个顺口溜:物数网传会表应。并说这是重点,年年必考,5分的题目摆在这里,你们爱背不背。 考试的时候,果然遇到这个问题,搜索枯肠,只能想...

Java干货分享
昨天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部