聊聊Mybatis的缓存
记得点击"欢少的成长之路",设为星标⭐
【资料图】
后台点击【联系我】,申请加入优质技术学习社群
大家好,我是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存活了一个小时,那么将整个清空一下。

进入了发展快车道 冷链行业市场规模正在快速膨胀
2022-03-21

行业正站在风口 数字化时代在为传统的自行车产业赋能
2022-03-21

以做强实体经济支撑为重点 成都单个项目年度计划投资同比提升
2022-03-21

拥有多个国际赛事的直播版权 广州游戏电竞企业业绩向好
2022-03-21

投诉量激增 直播带货存在这么多问题的主要原因是什么?
2022-03-21

工作专班深入到各企业 春寒料峭挡不住松原市施工热情
2022-03-21

引导企业向提供“产品+服务”转变 湖南加快智能农机服务化转型
2022-03-21

创新平台建设和科技成果转化 德州加大力度重奖创新
2022-03-21

潜在风险进一步放大 商品房现房销售已是大势所趋
2022-03-21

有序复工复产 1—2月份工业经济发展新动能持续增强
2022-03-21
行业正站在风口 数字化时代在为传统的自行车产业赋能
以做强实体经济支撑为重点 成都单个项目年度计划投资同比提升
拥有多个国际赛事的直播版权 广州游戏电竞企业业绩向好
投诉量激增 直播带货存在这么多问题的主要原因是什么?
工作专班深入到各企业 春寒料峭挡不住松原市施工热情
引导企业向提供“产品+服务”转变 湖南加快智能农机服务化转型
创新平台建设和科技成果转化 德州加大力度重奖创新
潜在风险进一步放大 商品房现房销售已是大势所趋
有序复工复产 1—2月份工业经济发展新动能持续增强
多层次高频调度 1至2月河北省工业运行先行指标稳中有增
以车路协同为基础 智能交通推动城市交通绿色高质量发展
人才短板成为制约产业链高质量发展的关键节点
通过技术手段整合调配供给资源 家政行业不断提质扩容
强化产业链深层次合作 加强重大装备国产化“一条龙”模式构建
如何进一步提升纳税人缴费人的减税降费获得感?
探索建设大数据及网络安全示范试点城市有哪些积极意义?
对制造业中小微企业实施缓缴税费政策有哪些积极意义?
进一步增强自我保护意识 消费者需注意辨别谨慎消费
将“走出去”变“请进来” 西安贸易产业转移承接作用不断得到增强
厦门应如何融入“数字中国”的重大战略发展大局?
江苏省如何不断满足老人日益增长的养老服务需求?
建设一体化的职业健康信息管理平台 天津职业人群保障加强
潜力持续释放 1—2月乡村消费品市场恢复略好于城镇
直接对接社会化服务 楼宇调解室将整体提升青岛劳动争议水平
成功化解纠纷11.47万件 银保监会服务质量日趋提高
春雷响百虫出 惊蛰文化在其他方面有了进一步发展
青绿山水画在古代山水画发展史上有着怎样的影响与地位?
开播即爆款 “文化类节目收视率低”这一固有印象被推翻
涵盖了109件真迹作品 凯斯·哈林展览将持续至6月13日


- 带有一点自信的自嘲 “隔路”是另一种味道的“凡尔赛”
- 与文渊阁前后呼应 “何以中国”特展隆重致敬文化大成
- 严重者可造成暂时性失明 享受冰雪运动要注意眼睛的健康防护
- 种类繁多让人眼花缭乱 选购牛奶时需要重点关注什么?
- 网课让孩子感到不安焦虑怎么办?八问八答回应广大家长关切
- 循环系统很容易受到刺激 “倒春寒”期间老人该如何做?
- 青少年患者睡眠问题日趋增加 9条建议为孩子助眠
- 我国肥胖人群正逐年递增 不良饮食习惯是重要诱因
- 如何减少噪声对听力的损伤?这份耳部和听力保健小贴士请收好
- 强化住房限购措施 西安限购限售范围进一步扩大
- 多种方式增加供给 进一步降低新市民和青年人的居住成本
- 预计9月下旬海口可实现安居房申请网上办理
- 政策调控力度持续升级 8月百城二手房市场均价止涨转跌
- 8月中国新房找房热度依然保持平稳 环比微涨0.2%
- 进一步加强商品房销售价格备案管理 今年全国楼市调控刷新历史纪录
- 西安第二批集中供地中28宗为现场拍卖方式出让
- 细分化需求得到释放 房屋居住的属性越发凸显
- 佛山顺德龙江近日挂牌商住地起拍价约19.88亿元
- 青岛市4宗地竞品质抽签结果出炉 地溢价均约15%
- 坚持政策支持、多方参与 浙江版保障性租赁住房明确新增比例目标
- 简化审批流程 武汉将实现房源申请配租全程网上办
- 追剧为何上瘾?你追的不是剧,而是及时满足的快感
- 11月谣言在“身边”,别信这些无稽之谈
- 不会融化的“果冻冰块”研制成功 有望改变食物冷藏方式
- 对症下药“十年痼疾”,“茶博士”帮老茶园重焕生机
- 既促进生产又保护生态他用古代农耕智慧造福现代农业
- 老人被野猪咬伤 打猎者赔了5万多
- 老鼠油治烫伤致孩子进ICU 害人偏方为何被奉为灵丹妙药
- “逆行”考研=集体滑落?这结论该慎下
- 试行“家长学校”“持证上岗”?可以引导但不宜“法外加槛”
- “布鞋奶奶”走了 曾亲自给部队子弟兵送鞋40年
- 北京道路停车支持ETC无感支付
- 北京五道口增设行人信号灯四面全绿时段
- “法不责众”不是健走团“占道”的护身符
- 北京:建议研考考生考前14天在京备考
- 北京市2022年民生实事邀市民投票
- 将“干部”当店名 这个口子不能开
- 北京:242辆京牌小客车参加司法处置
- 吸氢气就能抗癌又防衰?最新“科学”流言榜发布
- 北京:保障在校体育锻炼1小时获较高认可
- 世界艾滋病日:关于艾滋病,我想和你聊聊
- 故宫博物院2022年年票紧急停售 恢复销售时间将另行公告
- 云南磨憨边检站中老边境缴毒逾4公斤
- 内蒙古满洲里公布55例本土确诊病例行动轨迹
- 满洲里高风险地区增至6个 中国内地新冠疫苗接种超25亿剂次
- 广州长隆举办“猿猴特展” 稀有“夜猴”首秀
- 四川绵竹首次拍摄到野生大熊猫标记行为 划定领地或吸引异性
- 福建福州海警局利用无人机成功查获一起非法采矿案
- 北京海关今年已查获2700余批次涉嫌侵权商品
- 安徽合肥警方严打食药环知森领域违法犯罪 侦破重特大案件14起