数据查询的流程
二级缓存架构图
二级缓存流程图
二级缓存中的重要概念:事务缓存管理器
事务缓存管理器就是一个Map,以二级缓存为key,TransactionalCache为value。 TransactionalCache即包含了暂存区,表示了事务缓存管理器中可以有多个暂存区。
源码分析二级缓存
key的组成:与一级缓存基本一致
update方法
主要就两步,一步清空暂存区(update方法默认会进入此方法),一步交给其他的执行器执行sql
clearOnCommt=true:标记数据已被修改,由于没有真正的删除缓存区,防止其他会话读缓存,读到脏数据。
entriesToAddOnCommit.clear():清除暂存区,其实就是一个Map。
commit方法
分为两步:一步交给其他执行器执行提交操作,一步是更新缓存。
先清空缓存,在填充缓存
遍历暂存区的数据,填充到缓存区
query方法
主要有4步:
1、清楚暂存区,与update一致。query方法默认是不会走此方法的
2、从缓存中获取数据
3、交给其他执行器执行查询sql
4、将数据提交到暂存区
第2步:
从缓存获取数据,如果数据为null,也存储起来,防止缓存穿透
第4步:
将数据提交到暂存区。并不是提交到缓存区,只有commit才是提交到缓存区
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
喜欢就支持一下吧
相关推荐
暂无评论内容