首页 >企业动态 > > 正文

聊聊Mybatis的缓存

来源:程序员客栈 2023-01-12 04:03:14

记得点击"欢少的成长之路",设为星标⭐

后台点击【联系我】,申请加入优质技术学习社群


(相关资料图)

大家好,我是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存活了一个小时,那么将整个清空一下。

上一篇: 下一篇:
x
推荐阅读

聊聊Mybatis的缓存

2023-01-12

最新:产业帮扶助力乡村振兴

2023-01-11

陈建仁接“阁揆”?游锡堃:我牛嘴吐不出象牙

2023-01-11

【播资讯】重庆丰都三建乡:“三变”改革绘就乡村振兴新画卷

2023-01-11

机构观点:澳洲焦煤进口恢复不会形成总量上的实质增长

2023-01-11

预防血栓的利伐沙班,服用剂量不同,服药时间不一样 当前时讯

2023-01-11

乌克兰总统:终止梅德韦丘克等4人的乌克兰国籍 天天快资讯

2023-01-11

中国汽研2022年度净利6.93亿同比增长0.2%汽车技术服务非法规类业务、风洞业务等实现突破

2023-01-10

曲美家居(603818.SH)控股股东累计增持12.88万股 增持时间过半

2023-01-10

新城地产:公司土储1.31亿平方米,满足未来2-3年的开发运营所需-世界热资讯

2023-01-10

今日热讯:中航重机: 中航重机关于部分限制性股票回购注销完成的公告

2023-01-10

满易贷逾期一天拖欠多久会上征信

2023-01-10

平安小橙花网贷逾期1个月拖欠多久会上征信系统_全球观速讯

2023-01-10

世界消息!花鸭借钱逾期22年还不起征信有什么影响

2023-01-10

天天报道:长春工伤保险纠纷律师怎么收费

2023-01-10

从股神巴菲特身上学到,投资的基本风格:嗜睡症的懒散投资法

2023-01-09

维金斯回归训练有望明日复出 已连续伤停15场

2023-01-09

【世界聚看点】佩服张俪的好衣品,机场利用千鸟格营造出穿搭亮点,咋看咋时髦

2023-01-09

两岸“小三通”部分重启 全面复航呼声再起-天天日报

2023-01-09

每日快播:红河房屋买卖纠纷律师费用是多少

2023-01-09

精品民宿复现达芬奇之家,三星艺术电视联合好好住带来仪式感新年趴_世界热门

2023-01-09

当前资讯!梁安琪年轻照片流出,跟陈岚一样是美人,难怪何鸿燊为她打破规矩

2023-01-07

1月5日晚间消息,多家上市公司发布重大利空减持公告

2023-01-06

焦点信息:光格科技招股书成本披露前后不一,募投项目适用性存疑

2023-01-06

焦点热议:幸福蓝海:选择合适的影城标的寻求收并购等机会

2023-01-06

全球今亮点!2023年7月从北海来重庆需要核酸检测吗?

2023-01-06

1月5日基金净值:广发稳健回报混合A最新净值0.888,涨0.93%-天天快看

2023-01-06

A股异动 | 通达股份跌5% 控股股东拟减持不超3%股份

2023-01-05

天天资讯:主力加仓贵州茅台超8亿,消费复苏在途,白酒开门红稳了?

2023-01-05

特斯拉对加州新法规置若罔闻:仍在欺骗性宣传“自动驾驶”

2023-01-05

跨界光伏股价大涨!奥维通信要用6亿资产撬动45亿投资,股权惨遭司法拍卖 全球热资讯

2023-01-04

当前时讯:医美管控指导意见引波澜,这次又是错杀

2023-01-04

为什么双子老是喜欢天蝎 天蝎男为什么会真的爱双子女_观焦点

2023-01-04

环球讯息:广州单人单管多少钱

2023-01-04

波兰外交部:德国拒绝就二战赔款事宜进行谈判 每日看点

2023-01-04

一些国家对来自中国旅客采取临时防疫措施,中方:将本着对等原则采取相应措施|世界新视野

2023-01-03

环球资讯:价格前线|1月3日内蒙古森泰天然气异动提示

2023-01-03

2023年春节加班工资几倍工资?怎么算?

2023-01-03

常熟农商银行被罚169.9万:因未按规定履行客户身份识别义务等

2023-01-03

世界热点!华北中南部黄淮江淮等地有雾霾 新疆北部将有较强降雪

2023-01-03

当前速递!人生路上励志句子简短(精选824句)

2023-01-03

全球热文:吉林省以“一点需求、多点响应”机制缓解企业用工难题

2023-01-02

鼠尾草怎么养 怎么养鼠尾草_全球快消息

2023-01-02

Python 打印彩色日志

2023-01-01

天天快消息!臻有钱分期借款逾期七天多久上征信

2023-01-01

三伏天不适合做什么?

2022-12-31

C罗乔治娜约会!久违过二人世界,开未婚妻送的豪车,满面红光

2022-12-30

焦点资讯:2023少林寺元旦免票吗

2022-12-30

锦和商管(603682)12月30日主力资金净卖出96.42万元

2022-12-30

世界要闻:*ST必康12月30日开盘涨停

2022-12-30

12月29日基金净值:大成景气精选六个月持有混合A最新净值0.8425,涨0.74% 世界快播

2022-12-30

佛山健康南海通小程序新冠药物库存查询入口

2022-12-29

中国赴马里维和医疗分队成功救治3名外籍受伤士兵 天天消息

2022-12-29

当前报道:南京深圳康泰疫苗到苗接种通知(更新中)

2022-12-29

犀牛宝借款逾期11年会不会上征信

2022-12-29

简讯:Baird:特斯拉(TSLA.US)需求仍存动力 维持“跑赢大盘”评级

2022-12-29

恶意经典句子精选222句

2022-12-28

2022下半年邯郸中小学教资面试提前多久健康监测?

2022-12-28

NBA此前20年最后35秒领先9分的球队 13884胜0负_全球要闻

2022-12-28

中信银行APP 9.0焕新上线 打造有温度的财富管理样本|每日快报

2022-12-28

【全球播资讯】12月27日基金净值:金鹰民安回报定开A最新净值1.0863,涨0.78%

2022-12-28

瑞芯微: 2022年第二期股票期权与限制性股票激励计划首次授予股票期权与限制性股票激励对象名单(授予日) 当前热闻

2022-12-27

2023年唐山贺岁纪念币兑换网点一览表

2022-12-27

种出好风景 创造好生活(美丽中国·乡村旅游看生态②)-动态焦点

2022-12-27

天天微资讯!2599元起,荣耀平板V8 Pro正式发布,搭载天玑8100

2022-12-26

羊没有什么器官? 每日快播

2022-12-26

法国巴黎枪击案被告重新被拘 承认仇视外国人 今日热议

2022-12-26

周口市气象台发布道路结冰黄色预警「III级/较重」「2022-12-25」

2022-12-25

天天观速讯丨普惠贷款逾期九个月还不上了怎么办

2022-12-25

环球信息:世界体坛富婆前十出炉!美国5人上榜,中国仅1人入围,不是张伟丽

2022-12-24

最资讯丨华阳新材(600281):董事会、监事会换届选举

2022-12-23

纽约、肯塔基等州宣布出现紧急状况!美国2亿人受影响!拜登呼吁……_每日播报

2022-12-23

海口征集职业导师 满足市场多元化指导需求

2022-12-23

博彩公司遭黑客攻击,67000账户被窃,损失超30万!公司称登录信息由第三方泄露

2022-12-22

西安饮食收深交所关注函 11月至今股价翻超2.5倍

2022-12-22

环球播报:问:是否会加大抗原试剂的供应,尤其是零售药店的投放

2022-12-22

哈萨克斯坦外交部:俄哈乌三国天然气联盟目前仅处于构想阶段

2022-12-21

普京称与卢卡申科会谈成果颇丰 俄白“正进行联合军事规划”

2022-12-21

游戏板块12月20日跌1.21%,浙数文化领跌,主力资金净流出2.83亿元

2022-12-21

使用 IdentityServer 保护 Vue 前端 世界速讯

2022-12-20

小米11主板延保三年,保全机器“生命周期”,大厂风范彰显无遗

2022-12-20

波卡周报|31 项公投在 OpenGov 系统上提出,Bifrost 与 Astar & Shiden 开通 HRMP 通道!

2022-12-19

上海金山启动第二剂次新冠疫苗加强免疫接种,各街镇设临时接种点 全球简讯

2022-12-19

奇正藏药董秘回复:流感丸等抗疫产品根据市场需求,公司已经增加产量,保障患者用药需求

2022-12-19

【逝者】柳鸣九:一个90后的“灰姑娘”

2022-12-19

动态焦点:墨西哥赛三人20+热火击退马刺 巴特勒26+5希罗21+7

2022-12-18

五粮液曾从钦:白酒横跨一二三产业 推动产业融合发展 全球观点

2022-12-17

商品房买卖合同解除了后果是怎样的呢?

2022-12-17

【全球聚看点】斯坦森新片:《人之怒》节奏紧凑枪战火爆,好评热映中

2022-12-16

应对新冠疫情 钟南山提出8条个人防护建议

2022-12-16

金地集团: 董事会审计委员会工作制度(2022年12月修订)

2022-12-15

值得买(300785)12月15日主力资金净买入58.88万元|全球新要闻

2022-12-15

金达威:公司旗下品牌多特倍斯、Zipfizz、舞昆等产品通过跨境电商平台渠道进行销售

2022-12-15

长安汽车: 重庆长安汽车股份有限公司2022年面向专业投资者公开发行科技创新公司债券(第一期)发行公告 全球看点

2022-12-14

环球观点:粽子源于哪个朝代 粽子起源于哪个朝代

2022-12-14

新消息丨【机构调研记录】前海联合调研健之佳、龙磁科技

2022-12-14

12月13日佳沃食品(300268)龙虎榜数据:游资赵老哥上榜

2022-12-13

湘油泵董秘回复:公司没有该方面应披露的信息|天天简讯

2022-12-13

11月社融规模增量1.99万亿元 居民贷款环比改善

2022-12-12

借力新电商 西南山区有了新的致富经 全球观速讯

2022-12-12