文档章节

查询和缓存

猪刚烈
 猪刚烈
发布于 2014/10/12 11:47
字数 749
阅读 10
收藏 1

经过大量的测试,查询和缓存之间的关系已经基本上清楚了。


1. 一次查询过后,结果集中的所有个体都会进入持久化上下文,也就是一级缓存中(如果打开了二级缓存,它们也同样会进入二级缓存)。这就是意味着后面的程序如果要load(不是查询)结果集中的任何一个对象都会从缓存中直接命中,不会生成任何SQL去Hit数据库。


2. 但是作为结果集的整体,在不使用查询缓存的前提下是不会被缓存的。举个例子:当执行一个得到某个班级所有学生的查询后,这个班级所有的学生实例会被加载并进行入缓存中。但是缓存并没有缓存“这些学生都是某一个班级”这层关系!因此,当再次执行这个查询时,依然会生成SQL再次访问数据库。想要缓存查询结果,在这个例子中也就是缓存 “这些学生都是某一个 班级”的这层关系,就得使用查询缓存!对于 查询缓存来说, 构成key的是:hql生成的sql、sql的参数、排序、分页信息等。

 

我想查询不会先从缓存中查找对象的根本原因在于,即使Hibernate发现缓存中有符合条件的 对象 ,但也无法证实这些对象是结果的全集。因为缓存中的数据只是一小部分,所以它必须要生成SQL去数据库中查询。

 

如果使用了“Query Cache”,对一个查询来说,对它的缓存是这样处理的:查询的结果集做为Value,放置于查询缓存的region中。注意:这里存在的并不是真正的结果集。因为查询出来的实例已经放入了二级缓存,所以查询缓存不会重复保存这些实例,而是只保存实例的ID。这一点在JPwH一书的15.4.2中作过解释。对于key,它应该是一个可以用来唯一标识这个查询的东西,在hibernate中查询缓存的key由 hql生成的sql、 sql的参数、排序、分页等信息组成, 通过它我们可以明确地区别不同的查询,以便某个查询在下一次重复执行时可以能过这个key直接命中结果集。

维护查询缓存会对系统带来一定的负荷,因为Hibernate必须追踪结果集中涉及的各类对象是否发生了改动,因为一旦它们发生了改动,这些对象就可能不再是结果集中一员,又或者原来不在结果集中的对象应该进入结果集,这样当前缓存的这个结果集就失效了,必须重新生成SQL进行查询。


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

共有 人打赏支持
猪刚烈
粉丝 22
博文 708
码字总数 110
作品 1
海淀
程序员
私信 提问
Hibernate查询缓存全面分析

这里介绍Hibernate查询缓存对Iterator不起作用,只对List起作用。下面我们这种介绍把二级缓存 和 Hibernate查询缓存 结合使用。 AD: 本文向大家介绍Hibernate查询缓存,可能好多人还不了解H...

dong.li
2012/04/24
0
0
Hibernate缓存测试小总结

一级缓存测试: 1.Load测试: 在同一个session中发出两次load查询(1) 2.Get测试: 在同一个session中发出两次get查询(1) 3.iterate测试: 在同一个session中发出两次iterator查询(1(i...

heroShane
2014/03/02
0
0
hibernate三级缓存概括

Hibernate三级缓存 一级缓存(session级别缓存): 1、session关闭后,缓存就没了;hibernate发出一条sql查询,若缓存中没有,则从数据库中查,查到之后放入缓存 2、以id为key值缓存对象 二级...

挨踢精英
2015/10/12
1K
0
MySQL/MariaDB的查询缓存

查询缓存: 缓存的数据:k/v,即键值对; key:查询语句的hash值; value:查询语句的查询结果; 判断缓存是否命中标准: 通过整个查询语句的hash值的比较,完全相同则命中; 有些查询结果是...

刘景宇
07/27
0
0
SSM框架之MyBatis3专题4:查询缓存

查询缓存的使用,主要是为了提高查询访问速度。将用户对同一数据的重复查询过程简化,不再每次均从数据库中查询获取结果数据,从而提高访问速度。 MyBatis的查询缓存机制,根据缓存区的作用域...

糖醋白糖
06/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

网站老被劫持快照跳转怎么办

最近很多公司的网站被劫持跳转到了bo彩、cai票网站上去,客户从百度点击进去会跳转,直接输入网站的域名不会跳转,网站快照也被劫持成bo彩的内容,site查看网站在百度的收录也出现问题,收录...

网站安全
10分钟前
1
0
给自己灌鸡汤

前言 看极客时间的《数据结构与算法之美》,中间有一篇文章是在说怎么坚持学习的,摘抄一些片段过来,激励自己。 https://time.geekbang.org/column/article/69607 致使你掉队的原因 一个人在...

grace_233
12分钟前
1
0
如何在网络视听行业建一扇内容安全大门?

在人工智能飞速发展的三年里,整个网络视听产业数字化发展速度非常迅猛。大数据作为如今这个时代的产物,正不断推动整个产业的发展。网络视听行业中存在海量的数据,比如视频内容、视频浏览量...

阿里云官方博客
22分钟前
1
0
云安全简史

课程介绍: DT时代我们每个人的生活在不知不觉中与云计算发生了千丝万缕的联系,起床、吃饭、出行、社交、工作、娱乐、购物等大多数应用都在云上,然而安全事件频发时刻在为我们敲响警钟,面对...

mcy0425
23分钟前
2
0
数字IT基础-数据采集总线

摘要: 日志服务是阿里自产自用的产品,在双十一、双十二和新春红包期间承载阿里云/蚂蚁全站、阿里电商板块、云上几千商家数据链路,每日处理来自百万节点几十PB数据,峰值流量达到每秒百GB,...

阿里云云栖社区
26分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部