記得點(diǎn)擊"歡少的成長(zhǎng)之路",設(shè)為星標(biāo)?
后臺(tái)點(diǎn)擊【聯(lián)系我】,申請(qǐng)加入優(yōu)質(zhì)技術(shù)學(xué)習(xí)社群
(資料圖片)
大家好,我是Leo。
好久沒(méi)有輸出技術(shù)理論了,實(shí)在是忙。最近主要以設(shè)計(jì)系統(tǒng)為主了。面試剛好又倒在了Mybatis原理。今天來(lái)聊一下Mybatis的一級(jí)緩存,二級(jí)緩存。
Mybatis緩存是內(nèi)存中的數(shù)據(jù),主要是對(duì)數(shù)據(jù)庫(kù)查詢(xún)結(jié)果的保存,使用緩存的好處是避免頻繁與數(shù)據(jù)庫(kù)進(jìn)行交互,提升查詢(xún)的響應(yīng)速度。
數(shù)據(jù)庫(kù)緩存擴(kuò)展聊到Mybatis緩存。我們可以擴(kuò)展聊一下MySQL緩存。MySQL緩存其實(shí)與Mybatis類(lèi)似,在查詢(xún)的時(shí)候都會(huì)先通過(guò)查詢(xún)緩存檢查一下所需的數(shù)據(jù)是否存在緩存中,如果存在緩存的話(huà)就會(huì)直接返回,這樣就達(dá)到了避免頻繁與數(shù)據(jù)庫(kù)進(jìn)行交互的目的。
數(shù)據(jù)查詢(xún)流程圖
回歸正題在學(xué)習(xí)過(guò)程中,希望大家把知識(shí)點(diǎn)串起來(lái)學(xué)習(xí),這樣有助力更好的學(xué)習(xí)與理解
Mybatis 緩存主要分一級(jí)緩存和二級(jí)緩存。
一級(jí)緩存一級(jí)緩存也稱(chēng)為本地緩存(SqlSession),屬于二級(jí)緩存的子集。與數(shù)據(jù)庫(kù)同一次會(huì)話(huà)期間查詢(xún)到的數(shù)據(jù)會(huì)放在本地緩存中。以后如果需要獲取相同的數(shù)據(jù),直接從緩存中拿,沒(méi)必要再去查詢(xún)數(shù)據(jù)庫(kù)。
一級(jí)緩存的緩存數(shù)據(jù)只在SqlSession內(nèi)有效,它的范圍有兩種SESSION和STATEMENT,默認(rèn)是SESSION。如果不想使用一級(jí)緩存,可以通過(guò)下列代碼配置
使用SESSION,這樣每次執(zhí)行完一個(gè)Mapper中的語(yǔ)句都會(huì)將一級(jí)緩存清除。二級(jí)緩存
一級(jí)緩存作用域太低,如果多個(gè)SqlSession需要共享緩存,則就需要開(kāi)啟二級(jí)緩存。二級(jí)緩存也叫全局緩存,二級(jí)緩存是基于namespace級(jí)別的緩存,一個(gè)namespace對(duì)應(yīng)一個(gè)二級(jí)緩存。二級(jí)緩存需要我們手動(dòng)開(kāi)啟。
我們可以通過(guò)在 mybatis-config 文件中配置開(kāi)啟二級(jí)緩存。
查詢(xún)順序
Mybatis的查詢(xún)順序如下圖
Mybatis查詢(xún)順序
我們可以根據(jù)上圖大概介紹一下B的流程。
首先創(chuàng)建SqlSession會(huì)話(huà)查詢(xún)一條數(shù)據(jù),這條數(shù)據(jù)就會(huì)被放到當(dāng)前會(huì)話(huà)的一級(jí)緩存中。如果當(dāng)前SqlSession去執(zhí)行commit操作(插入,更新,刪除),那么就會(huì)清空SqlSession中的一級(jí)緩存,保證緩存中始終保存的是最新的數(shù)據(jù),避免臟讀。這個(gè)時(shí)候并不會(huì)把一級(jí)緩存更新到二級(jí)緩存,這一步操作是在關(guān)閉SqlSession時(shí)觸發(fā)的。新會(huì)話(huà)查詢(xún)信息,就會(huì)從二級(jí)緩存中獲取數(shù)據(jù)。注意:兩次查詢(xún)必須在同一個(gè)SqlSession中完成,否則將不會(huì)走M(jìn)ybatis的一級(jí)緩存
相反,我們?cè)谑褂肕ybatis作為我們的持久層框架時(shí),也就是上圖的A流程
開(kāi)啟二級(jí)緩存后,會(huì)使用 CachingExecutor 裝飾 Executor進(jìn)入一級(jí)緩存查詢(xún)流程前先在CachingExecutor進(jìn)行二級(jí)緩存的查詢(xún)?nèi)绻?jí)緩存沒(méi)有命中的話(huà)會(huì)到一級(jí)緩存中查詢(xún)最后一級(jí)緩存沒(méi)有的話(huà)才會(huì)去與數(shù)據(jù)庫(kù)進(jìn)行查詢(xún)交互生命周期二級(jí)緩存開(kāi)啟后,同一個(gè) namespace 下的所有操作語(yǔ)句,都影響著同一個(gè) Cache,即二級(jí)緩存被多個(gè) SqlSession 共享,是一個(gè)全局的變量。
MyBatis 是默認(rèn)關(guān)閉二級(jí)緩存的,因?yàn)閷?duì)于增刪改操作頻繁的話(huà),那么二級(jí)緩存形同虛設(shè),每次都會(huì)被清空緩存。
一級(jí)緩存沒(méi)有過(guò)期時(shí)間,只有生命周期。MyBatis在開(kāi)啟一個(gè)數(shù)據(jù)庫(kù)會(huì)話(huà)時(shí),會(huì)創(chuàng)建一個(gè)新的SqlSession對(duì)象,SqlSession對(duì)象中會(huì)有一個(gè)Executor對(duì)象,Executor對(duì)象中持有一個(gè)PerpetualCache對(duì)象。當(dāng)會(huì)話(huà)結(jié)束時(shí),SqlSession對(duì)象及其內(nèi)部的Executor對(duì)象還有PerpetualCache對(duì)象也一并釋放掉。
二級(jí)緩存有過(guò)期時(shí)間,但沒(méi)有后臺(tái)線(xiàn)程進(jìn)行檢測(cè)。需要注意的是,并不是key-value的過(guò)期時(shí)間,而是這個(gè)cache的過(guò)期時(shí)間,是flushInterval,意味著整個(gè)清空緩存cache,所以不需要后臺(tái)線(xiàn)程去定時(shí)檢測(cè)。每當(dāng)存取數(shù)據(jù)的時(shí)候,都有檢測(cè)一下cache的生命時(shí)間,默認(rèn)是1小時(shí),如果這個(gè)cache存活了一個(gè)小時(shí),那么將整個(gè)清空一下。
免責(zé)聲明:本文不構(gòu)成任何商業(yè)建議,投資有風(fēng)險(xiǎn),選擇需謹(jǐn)慎!本站發(fā)布的圖文一切為分享交流,傳播正能量,此文不保證數(shù)據(jù)的準(zhǔn)確性,內(nèi)容僅供參考
聊聊Mybatis的緩存-世界信息
記得點(diǎn)擊 "歡少的成長(zhǎng)之路 ",設(shè)為星標(biāo)?后臺(tái)點(diǎn)擊【聯(lián)系我】,申請(qǐng)加入優(yōu)質(zhì)技術(shù)學(xué)習(xí)社群大家好,我是Leo。好久沒(méi)有輸出技術(shù)理論了,實(shí)...
速看!2023年投資錦囊-每日信息
2022年對(duì)于大多數(shù)投資者來(lái)說(shuō)可能都算是比較艱難的一年,我們經(jīng)歷了四月底的至暗時(shí)刻,經(jīng)歷了一鼓作氣的快速反彈,也經(jīng)歷了成長(zhǎng)、周期、價(jià)值的
復(fù)星掛牌轉(zhuǎn)讓上海星光耀廣場(chǎng)綜合體部分物業(yè)-焦點(diǎn)消息
觀(guān)點(diǎn)網(wǎng)訊:1月10日,據(jù)上海聯(lián)交所消息,復(fù)星集團(tuán)旗下位于上海普陀區(qū)的星光耀廣場(chǎng)正在轉(zhuǎn)讓。觀(guān)點(diǎn)新媒體獲悉,上海星光耀廣場(chǎng)位于普陀區(qū)曹...
無(wú)錫雙層巴士有哪些站點(diǎn)?-天天簡(jiǎn)訊
臨時(shí)開(kāi)辟的雙層巴士新線(xiàn)路:點(diǎn)擊查看以下為常年開(kāi)通的常規(guī)線(xiàn)路樂(lè)游3號(hào)線(xiàn):中央車(chē)站(假日酒店)、中山路、吳橋(中山路)、蓮蓉橋、勝利門(mén)(中山路)
翼龍貸借款逾期五年不還會(huì)影響征信嗎
網(wǎng)貸逾期一般會(huì)上征信,有些借貸機(jī)構(gòu)在用戶(hù)逾期后一天后就會(huì)上報(bào)給征信機(jī)構(gòu),而有些借貸機(jī)構(gòu)則是會(huì)在幾天后上報(bào)給征信機(jī)構(gòu),因?yàn)橛行┙栀J...
特力A1月10日盤(pán)中漲停-環(huán)球速讀
以下是特力A在北京時(shí)間1月10日13:42分盤(pán)口異動(dòng)快照:1月10日13點(diǎn)42分,特力A盤(pán)中漲停,報(bào)19 73元,目前封單168636手,折合3 33億元。截至目
福能東方:公司控股子公司超業(yè)精密相關(guān)訂單情況可見(jiàn)公司公告-世界播報(bào)
福能東方(300173)01月10日在投資者關(guān)系平臺(tái)上答復(fù)了投資者關(guān)心的問(wèn)題。
四級(jí)醫(yī)療事故有哪些特殊形式
1、醫(yī)療事故的主體是合法的醫(yī)療機(jī)構(gòu)及其醫(yī)務(wù)人員。2、醫(yī)療機(jī)構(gòu)及其醫(yī)務(wù)人員違反了醫(yī)療衛(wèi)生管理法律、法規(guī)和診療護(hù)理規(guī)范、常規(guī)。3、醫(yī)療...
重慶市市場(chǎng)監(jiān)管局關(guān)于2022年自愿性認(rèn)證從業(yè)機(jī)構(gòu) “雙隨機(jī)、一公開(kāi)”監(jiān)督檢查結(jié)果的通報(bào)
中國(guó)質(zhì)量新聞網(wǎng)訊2023年1月5日,重慶市市場(chǎng)監(jiān)督管理局發(fā)布關(guān)于2022年自愿性認(rèn)證從業(yè)機(jī)構(gòu)“雙隨機(jī)、一公開(kāi)”監(jiān)督檢
維科技術(shù):公司已終止對(duì)卓力能電子公司投資-當(dāng)前簡(jiǎn)訊
同花順(300033)金融研究中心1月9日訊,有投資者向維科技術(shù)(600152)(600152)提問(wèn),公司不再持有卓力能股權(quán)了?企查查顯示已不是股東。公司回答
最低工資標(biāo)準(zhǔn)穩(wěn)步調(diào)漲
進(jìn)入新年,部分地區(qū)迎來(lái)了最低工資...
“工程項(xiàng)目中標(biāo)量”增長(zhǎng)近六成 高頻數(shù)據(jù)印證投資增長(zhǎng)勢(shì)頭強(qiáng)勁-速看
2022年12月“工程項(xiàng)目中標(biāo)量”同比...
二〇二二年金融統(tǒng)計(jì)數(shù)據(jù)顯示 我國(guó)人民幣貸款增加超二十一萬(wàn)億元 同比多增一點(diǎn)三...
本報(bào)北京1月10日電(記者吳秋余)...
到2025年,住房公積金數(shù)字化發(fā)展新模式基本確立 住房公積金業(yè)務(wù)將更加好辦易辦-每日消息
本報(bào)北京1月10日電(記者廖睿靈)...
第六期全國(guó)“公安楷?!比合瘢阂灾艺\(chéng)書(shū)寫(xiě)榮光-世界速訊
他們忠誠(chéng)于黨,堅(jiān)決聽(tīng)黨指揮,以黨...
(新春走基層)85后青年返鄉(xiāng)“跳農(nóng)門(mén)”:從“水土不服”到逐夢(mèng)鄉(xiāng)野-快看
圖為張鵬為剛剛破土的秧苗澆水。曾...
新春走基層丨人頭攢動(dòng)的熱乎勁又回來(lái)了——西北縣城市場(chǎng)一線(xiàn)觀(guān)察-速看
新華社蘭州1月10日電題:人頭攢動(dòng)的...
發(fā)燒就要喝電解質(zhì)水?醫(yī)生:僅適合有這些癥狀的患者→-資訊
發(fā)燒了應(yīng)該喝白開(kāi)水還是電解質(zhì)水呢...
湖南長(zhǎng)沙雨花區(qū): 讓居民有“醫(yī)”靠
【抗疫中,我們眾志成城?】“胸腔...
新冠病毒感染強(qiáng)調(diào)綜合治療 小分子口服抗病毒藥應(yīng)嚴(yán)格規(guī)范使用-每日速訊
【抗疫中,我們眾志成城?】近期,...
蜘蛛紙牌在電腦的哪個(gè)地方?蜘蛛紙牌在電腦上怎么玩?
蜘蛛紙牌在電腦的哪個(gè)地方?蜘蛛紙...
無(wú)線(xiàn)網(wǎng)絡(luò)的密碼怎么設(shè)置?重新設(shè)置無(wú)線(xiàn)網(wǎng)絡(luò)密碼的操作教程
無(wú)線(xiàn)網(wǎng)絡(luò)的密碼怎么設(shè)置?重新設(shè)置...
藍(lán)牙耳機(jī)連接電腦后沒(méi)聲音是什么原因?藍(lán)牙耳機(jī)連接電腦后沒(méi)聲音的解決教程
藍(lán)牙耳機(jī)連接電腦后沒(méi)聲音是什么原...
怎么把電腦恢復(fù)成出廠(chǎng)設(shè)置?電腦恢復(fù)成出廠(chǎng)設(shè)置的操作方法
怎么把電腦恢復(fù)成出廠(chǎng)設(shè)置?電腦恢...
四級(jí)醫(yī)療事故有哪些特殊形式
1、醫(yī)療事故的主體是合法的醫(yī)療機(jī)...
重慶市市場(chǎng)監(jiān)管局關(guān)于2022年自愿性認(rèn)證從業(yè)機(jī)構(gòu) “雙隨機(jī)、一公開(kāi)”監(jiān)督檢查結(jié)果的通報(bào)
中國(guó)質(zhì)量新聞網(wǎng)訊2023年1月5日,重...
維科技術(shù):公司已終止對(duì)卓力能電子公司投資-當(dāng)前簡(jiǎn)訊
同花順(300033)金融研究中心1月9...
5個(gè)案例:難以描述的需求,PRD越抹越黑?-全球熱文
本文作者從自身工作實(shí)踐出發(fā),梳理...