聊聊Mybatis的缓存-天天热门
2023-01-12 06:35:59 来源:程序员客栈
记得点击"欢少的成长之路",设为星标⭐
后台点击【联系我】,申请加入优质技术学习社群
【资料图】
大家好,我是Leo。
好久没有输出技术理论了,实在是忙。最近主要以设计系统为主了。面试刚好又倒在了Mybatis原理。今天来聊一下Mybatis的一级缓存,二级缓存。
Mybatis缓存是内存中的数据,主要是对数据库查询结果的保存,使用缓存的好处是避免频繁与数据库进行交互,提升查询的响应速度。
数据库缓存扩展聊到Mybatis缓存。我们可以扩展聊一下MySQL缓存。MySQL缓存其实与Mybatis类似,在查询的时候都会先通过查询缓存检查一下所需的数据是否存在缓存中,如果存在缓存的话就会直接返回,这样就达到了避免频繁与数据库进行交互的目的。
数据查询流程图
回归正题在学习过程中,希望大家把知识点串起来学习,这样有助力更好的学习与理解
Mybatis 缓存主要分一级缓存和二级缓存。
一级缓存一级缓存也称为本地缓存(SqlSession),属于二级缓存的子集。与数据库同一次会话期间查询到的数据会放在本地缓存中。以后如果需要获取相同的数据,直接从缓存中拿,没必要再去查询数据库。
一级缓存的缓存数据只在SqlSession内有效,它的范围有两种SESSION和STATEMENT,默认是SESSION。如果不想使用一级缓存,可以通过下列代码配置
使用SESSION,这样每次执行完一个Mapper中的语句都会将一级缓存清除。二级缓存
一级缓存作用域太低,如果多个SqlSession需要共享缓存,则就需要开启二级缓存。二级缓存也叫全局缓存,二级缓存是基于namespace级别的缓存,一个namespace对应一个二级缓存。二级缓存需要我们手动开启。
我们可以通过在 mybatis-config 文件中配置开启二级缓存。
查询顺序
Mybatis的查询顺序如下图
Mybatis查询顺序
我们可以根据上图大概介绍一下B的流程。
首先创建SqlSession会话查询一条数据,这条数据就会被放到当前会话的一级缓存中。如果当前SqlSession去执行commit操作(插入,更新,删除),那么就会清空SqlSession中的一级缓存,保证缓存中始终保存的是最新的数据,避免脏读。这个时候并不会把一级缓存更新到二级缓存,这一步操作是在关闭SqlSession时触发的。新会话查询信息,就会从二级缓存中获取数据。注意:两次查询必须在同一个SqlSession中完成,否则将不会走Mybatis的一级缓存
相反,我们在使用Mybatis作为我们的持久层框架时,也就是上图的A流程
开启二级缓存后,会使用 CachingExecutor 装饰 Executor进入一级缓存查询流程前先在CachingExecutor进行二级缓存的查询如果二级缓存没有命中的话会到一级缓存中查询最后一级缓存没有的话才会去与数据库进行查询交互生命周期二级缓存开启后,同一个 namespace 下的所有操作语句,都影响着同一个 Cache,即二级缓存被多个 SqlSession 共享,是一个全局的变量。
MyBatis 是默认关闭二级缓存的,因为对于增删改操作频繁的话,那么二级缓存形同虚设,每次都会被清空缓存。
一级缓存没有过期时间,只有生命周期。MyBatis在开启一个数据库会话时,会创建一个新的SqlSession对象,SqlSession对象中会有一个Executor对象,Executor对象中持有一个PerpetualCache对象。当会话结束时,SqlSession对象及其内部的Executor对象还有PerpetualCache对象也一并释放掉。
二级缓存有过期时间,但没有后台线程进行检测。需要注意的是,并不是key-value的过期时间,而是这个cache的过期时间,是flushInterval,意味着整个清空缓存cache,所以不需要后台线程去定时检测。每当存取数据的时候,都有检测一下cache的生命时间,默认是1小时,如果这个cache存活了一个小时,那么将整个清空一下。
为你推荐
-
聊聊Mybatis的缓存-天天热门
-
“反弹”“提升”!国际机构看好中国经济前景 资讯
-
欠满易贷的网贷的钱逾期会不会被起诉 天天热议
-
世界短讯!公安部:2022年全国机动车保有量达4.17亿辆,新能源汽车保有量达1310万辆
-
描写森林的5个句子(精选58句)
-
每日快讯!中国电建:子公司联合中标52.79亿元工程
-
百事通!长城汽车:12月新能源车销售11101台
-
第三个“中国人民警察节” 各地开展形式多样的警察节庆祝活动
-
世界播报:小期贷借款逾期14年延迟还款征信有什么影响
-
中邮钱包逾期4个月会上征信吗
-
vivo S,又见爆款 天天快资讯
-
当前最新:武汉护照照片在哪里拍
-
【全球速看料】建鹏控股(01722.HK)拟折让约17.3%配售最多1亿股 净筹约1083.5万港元
-
守护跨海大桥的春运
-
环球焦点!Notion 很好,但我已经换到了钉钉文档
-
布口罩洗了还能用吗?_环球简讯
-
复星基金会联合复星医药、真实生物向中西部180个县捐赠1亿元阿兹夫定
-
5个案例:难以描述的需求,PRD越抹越黑? 世界观点
-
全球新动态:底部,主力吸筹个股名单
-
小袋鼠借款逾期17年征信有什么影响
推荐内容
- 聊聊Mybatis的缓存-天天热门
- “反弹”“提升”!国际机构看好中国经济前景 资讯
- 欠满易贷的网贷的钱逾期会不会被起诉 天天热议
- 世界短讯!公安部:2022年全国机动车保有量达4.17
- 描写森林的5个句子(精选58句)
- 每日快讯!中国电建:子公司联合中标52.79亿元工程
- 百事通!长城汽车:12月新能源车销售11101台
- 第三个“中国人民警察节” 各地开展形式多样的警
- 世界播报:小期贷借款逾期14年延迟还款征信有什么
- 中邮钱包逾期4个月会上征信吗
- vivo S,又见爆款 天天快资讯
- 当前最新:武汉护照照片在哪里拍
- 【全球速看料】建鹏控股(01722.HK)拟折让约17.3%
- 守护跨海大桥的春运
- 环球焦点!Notion 很好,但我已经换到了钉钉文档
- 布口罩洗了还能用吗?_环球简讯
- 复星基金会联合复星医药、真实生物向中西部180个
- 5个案例:难以描述的需求,PRD越抹越黑? 世界观点
- 全球新动态:底部,主力吸筹个股名单
- 小袋鼠借款逾期17年征信有什么影响
- 【环球时快讯】【大美中国】立体城市 大美重庆
- 《乡村爱情15》1月12日起两季连播,一起回象牙山
- 5年约4千万!获嘉县城乡环卫一体化购买社会化服务
- 尼康正在开发Z 85mm f/1.2 S镜头和Z 26mm f/2.8饼干头
- 到账36亿!太阳能终于等到电费补贴,股民盼10个涨停
- 2023年内江两会特别报道丨内江市疾病预防控制中心
- 每日简讯:京东白条网贷逾期21天不还征信有什么影
- 世界百事通!香雪制药上榜“2022广东省制造业企业
- 焦点简讯:等到过年,我绝不穿一身黑!像她们这样
- 嗨袋网贷逾期六年不还征信有什么影响 全球观热点
- 全球报道:樱桃和荔枝可以放冰箱吗
- 让车企失去价值 丰田章男再质疑电动车_最新消息
- 新盛实业以靠谱安全高效服务受到了行业认可
- 全球最资讯丨啥情况?优酷一个账号仅能登录一台手
- 速读:或2024年上市 曝法拉利全新V12超跑谍照
- 心服口服?C罗发表诚恳言论,梅西很意外,世界杯
- 世界简讯:绝望伤心句子(精选851句)
- 盛和资源(600392):盛和资源董事会议事规则(2023
- 泰伯网WIF2022创新先行者论坛成功举办!_今日讯
- 广告语频受质疑,海信“擦边营销”能走多远? 世
油气
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
经济
-
中新网通辽10月18日电 (记者 张林虎)18日,记者从内蒙古自治区通辽市奈曼旗公安局获悉,国家一级保护动物--梅花鹿误入当地村民羊群,
-
中新网杭州10月18日电 (王题题 胡燕婕)云天收夏色,浅秋正渐浓。10月18日,浙江杭州市西湖游船有限公司推出的惠民多站点“西湖环湖游
-
中新网福州10月18日电 (记者 龙敏 王东明)福州市晋安区官方18日晚间通报,18日14时47分,晋安区岳峰镇化工路爱摩轮商业广场项目摩天
-
中新网兰州10月18日电 (闫姣 艾庆龙 吉翔)“红山白土头,黄河向西流。”不少人疑问,天下黄河向东流,为何甘肃永靖县这段黄河却向西
-
中新网北京10月18日电 《清华城市健康设施指数》18日在北京发布。报告成果显示,城市健康设施指数领先城市以中心城市和东部沿海城市