hibernate缓存策略

hibernate缓存策略

ID:15379667

大小:90.00 KB

页数:5页

时间:2018-08-03

hibernate缓存策略_第1页
hibernate缓存策略_第2页
hibernate缓存策略_第3页
hibernate缓存策略_第4页
hibernate缓存策略_第5页
资源描述:

《hibernate缓存策略》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Hibernate缓存策略1.数据缓存1.1.概述缓存是数据库数据临时容器,它包含了库表数据的临时拷贝,位于数据库与数据访问层之间。ORM在进行数据读取时,会根据其缓存管理策略,首先在内存中查询,如果在内存中发现所需数据(缓存命中),则直接以此数据错位查询结果加以利用,从而避免了数据库调用的性能开销。缓存的介质一般是内存,所以读写速度很快。但如果缓存中存放的数据量非常大时,也会用硬盘作为缓存介质。缓存的实现不仅仅要考虑存储的介质,还要考虑到管理缓存的并发访问和缓存数据的生命周期。1.2.缓存范围缓存的范围决定了缓存的生命周期以及可以被谁访问。缓存的范围分为

2、三级。1)事物级缓存(TransactionLayerCache)缓存只能被当前事务访问。缓存的生命周期依赖于事务的生命周期,当事务结束时,缓存也就结束生命周期。在此范围下,缓存的介质是内存。事务可以是数据库事务或者应用事务,每个事务都有独自的缓存,缓存内的数据通常采用相互关联的的对象形式。2)应用级/进程级缓存(Application/ProcessLayerCache)缓存被进程内的所有事务共享。这些事务有可能是并发访问缓存,因此必须对缓存采取必要的事务隔离机制。缓存的生命周期依赖于进程的生命周期,进程结束时,缓存也就结束了生命周期。进程范围的缓存可能

3、会存放大量的数据,所以存放的介质可以是内存或硬盘。缓存内的数据既可以是相互关联的对象形式也可以是对象的松散数据形式。1)集群/分布式缓存(ClusterLayerCache)在集群环境中,缓存被一个机器或者多个机器的进程共享。缓存中的数据被复制到集群环境中的每个进程节点,进程间通过远程通信来保证缓存中的数据的一致性,缓存中的数据通常采用对象的松散数据形式。对大多数应用来说,应该慎重地考虑是否需要使用集群范围的缓存,因为访问的速度不一定会比直接访问数据库数据的速度快多少。持久化层可以提供多种范围的缓存。如果在事务范围的缓存中没有查到相应的数据,还可以到进程范

4、围或集群范围的缓存内查询,如果还是没有查到,那么只有到数据库中查询。事务范围的缓存是持久化层的第一级缓存,通常它是必需的;进程范围或集群范围的缓存是持久化层的第二级缓存,通常是可选的。1.1.缓存的并发访问策略当多个并发的事务同时访问持久化层的缓存的相同数据时,会引起并发问题,必须采用必要的事务隔离措施。1)Read-only只读。对于从来不会修改的数据,如参考数据,可以使用这种并发访问策略。2)Nonstrict-read-write非严格读写。如果程序对并发访问下的数据同步要求不是非常严格,且数据更新操作频率较低(几个小时以上),可以采用这种并发访问策

5、略,获得较好的性能。3)Read-write严格读写。提供了ReadCommitted事务隔离级别。仅仅在非集群的环境中适用。对于经常被读但很少修改的数据,可以采用这种隔离类型,因为它可以防止脏读这类的并发问题。4)Transactional事务。仅仅在托管环境中适用。它提供了RepeatableRead事务隔离级别。对于经常被读但很少修改的数据,可以采用这种隔离类型,因为它可以防止脏读和不可重复读这类的并发问题。事务型并发访问策略是事务隔离级别最高,只读型的隔离级别最低。事务隔离级别越高,并发性能就越低。1.Hibernate缓存1.1.概述Hibern

6、ate中提供了两级Cache,第一级别的缓存是Session级别的缓存,它是属于事务范围的缓存。这一级别的缓存由hibernate管理的,一般情况下无需进行干预;第二级别的缓存是SessionFactory级别的缓存,它是属于进程范围或群集范围的缓存。这一级别的缓存可以进行配置和更改,并且可以动态加载和卸载。Hibernate还为查询结果提供了一个查询缓存,它依赖于第二级缓存。1.2.一级缓存和二级缓存比较第一级缓存第二级缓存存放数据的形式相互关联的持久化对象对象的散装数据缓存的范围事务范围,每个事务都有单独的第一级缓存进程范围或集群范围,缓存被同一个进程

7、或集群范围内的所有事务共享并发访问策略由于每个事务都拥有单独的第一级缓存,不会出现并发问题,无需提供并发访问策略由于多个事务会同时访问第二级缓存中相同数据,因此必须提供适当的并发访问策略,来保证特定的事务隔离级别数据过期策略没有提供数据过期策略。处于一级缓存中的对象永远不会过期,除非应用程序显式清空缓存或者清除特定的对象必须提供数据过期策略,如基于内存的缓存中的对象的最大数目,允许对象处于缓存中的最长时间,以及允许对象处于缓存中的最长空闲时间物理存储介质内存内存和硬盘。对象的散装数据首先存放在基于内在的缓存中,当内存中对象的数目达到数据过期策略中指定上限时

8、,就会把其余的对象写入基于硬盘的缓存中。缓存的软件实现在Hiber

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。