最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Mybatis詳細(xì)對(duì)比一級(jí)緩存與二級(jí)緩存

 更新時(shí)間:2022年10月10日 11:22:40   作者:Decade0712  
MyBatis 包含一個(gè)非常強(qiáng)大的查詢緩存特性,它可以非常方便地配置和定制,緩存可以極大的提升查詢效率。MyBatis中默認(rèn)定義了兩級(jí)緩存,分別是一級(jí)緩存和二級(jí)緩存

基本要點(diǎn)

1、緩存

什么是緩存?

存在內(nèi)存中的臨時(shí)數(shù)據(jù),我們可以把用戶經(jīng)常查詢的數(shù)據(jù)存放到緩存中,當(dāng)用戶重復(fù)查詢時(shí),我們可以直接從緩存中查詢,提高查詢效率,可以解決高并發(fā)系統(tǒng)的性能問(wèn)題

為什么使用緩存?

減少和數(shù)據(jù)庫(kù)交互次數(shù),減輕數(shù)據(jù)庫(kù)的壓力,提高系統(tǒng)效率

什么樣的數(shù)據(jù)能使用緩存?

經(jīng)常查詢且不經(jīng)常改變的數(shù)據(jù)

2、一級(jí)緩存(默認(rèn)開啟,無(wú)法關(guān)閉)

1)一級(jí)緩存的有效區(qū)間是sqlSession從創(chuàng)建到關(guān)閉的過(guò)程

假設(shè)我們重復(fù)執(zhí)行同一條查詢語(yǔ)句,如下圖所示

我們可以看出,程序只會(huì)連接數(shù)據(jù)庫(kù)查詢一次,后面的查詢結(jié)果都從緩存中取出

2)一級(jí)緩存失效的幾種情況

  • 查詢不同的東西(前后2次的查詢不一樣,會(huì)刷新緩存)
  • 執(zhí)行insert、update 和 delete 語(yǔ)句后會(huì)刷新緩存(增刪改操作可能會(huì)改變?cè)瓉?lái)的數(shù)據(jù),所以必定會(huì)刷新緩存)
  • 查詢不同的Mapper.xml
  • 手動(dòng)清除緩存,兩次查詢中間調(diào)用了sqlSession.clearCache()方法

3、二級(jí)緩存

1)定義

二級(jí)緩存是基于namespace級(jí)別的緩存,可以理解為單個(gè)Mapper級(jí)別的緩存

建議將SQL映射文件涉及到的實(shí)體類序列化,即實(shí)現(xiàn)Serializable接口,防止出現(xiàn)報(bào)錯(cuò)

2)工作機(jī)制

  • 所有的查詢數(shù)據(jù)都會(huì)先放在一級(jí)緩存中,當(dāng)會(huì)話commit或者sqlSession關(guān)閉時(shí),系統(tǒng)會(huì)把一級(jí)緩存中的數(shù)據(jù)傳遞到二級(jí)緩存中
  • 當(dāng)xml文件再次被調(diào)用且執(zhí)行相同的查詢操作時(shí),直接從Mapper的緩存中查
  • 不同的mapper查出的數(shù)據(jù)會(huì)放在自己對(duì)應(yīng)的緩存中

3)開啟步驟:

首先去mybatis-config.xml中開啟全局緩存

<settings>
    <setting name="cachaEnable" value="value"/>
</setting>

在SQL映射文件文件中啟用全局的二級(jí)緩存

如下,我們創(chuàng)建了一個(gè)清除策略為 FIFO 的緩存,每隔 60 秒刷新

最多可以存儲(chǔ)結(jié)果對(duì)象或列表的 512 個(gè)引用,返回的對(duì)象被認(rèn)為是只讀的

如果不需要參數(shù),直接使用<cache/>即可

<cache
  eviction="FIFO"
  flushInterval="60000"
  size="512"
  readOnly="true"/>

4)緩存的幾種清除策略(主要了解以下2種)

  • LRU – 最近最少使用:移除最長(zhǎng)時(shí)間不被使用的對(duì)象。
  • FIFO – 先進(jìn)先出:按對(duì)象進(jìn)入緩存的順序來(lái)移除它們。
  • SOFT – 軟引用:基于垃圾回收器狀態(tài)和軟引用規(guī)則移除對(duì)象。
  • WEAK – 弱引用:更積極地基于垃圾收集器狀態(tài)和弱引用規(guī)則移除對(duì)象

4、緩存查詢?cè)?/h3>

我們的查詢請(qǐng)求會(huì)先去二級(jí)緩存中查看有沒有數(shù)據(jù)

如果沒有,就會(huì)去一級(jí)緩存中查有沒有

如果都沒有,再連接數(shù)據(jù)庫(kù)查詢

到此這篇關(guān)于Mybatis詳細(xì)對(duì)比一級(jí)緩存與二級(jí)緩存的文章就介紹到這了,更多相關(guān)Mybatis緩存內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java實(shí)現(xiàn)文件點(diǎn)擊沒反應(yīng)的方法

    Java實(shí)現(xiàn)文件點(diǎn)擊沒反應(yīng)的方法

    jsp頁(yè)面鏈接,點(diǎn)擊訪問(wèn)action用IO流去下載服務(wù)器上的文件,問(wèn)題是任憑怎么點(diǎn)擊都沒反應(yīng),日志也不報(bào)錯(cuò)。這篇文章給大家介紹Java實(shí)現(xiàn)文件點(diǎn)擊沒反應(yīng)的方法,需要的朋友參考下吧
    2018-07-07
  • IDEA教程創(chuàng)建SpringBoot前后端分離項(xiàng)目示例圖解

    IDEA教程創(chuàng)建SpringBoot前后端分離項(xiàng)目示例圖解

    在使用spring、mybatis等框架時(shí),配置文件很復(fù)雜,有時(shí)復(fù)雜的讓人想放棄Java,使用C#。springboot出現(xiàn)這一切問(wèn)題就都不是問(wèn)題
    2021-10-10
  • Java中Date與String相互轉(zhuǎn)換的方法

    Java中Date與String相互轉(zhuǎn)換的方法

    這篇文章主要為大家詳細(xì)介紹了Java中Date與String相互轉(zhuǎn)換方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • Java8中的default關(guān)鍵字詳解

    Java8中的default關(guān)鍵字詳解

    這篇文章主要介紹了Java8中的default關(guān)鍵字詳解,在實(shí)現(xiàn)某個(gè)接口的時(shí)候,需要實(shí)現(xiàn)該接口所有的方法,這個(gè)時(shí)候default關(guān)鍵字就派上用場(chǎng)了。通過(guò)default關(guān)鍵字定義的方法,集成該接口的方法不需要去實(shí)現(xiàn)該方法,需要的朋友可以參考下
    2023-08-08
  • Spring AOP里的靜態(tài)代理和動(dòng)態(tài)代理用法詳解

    Spring AOP里的靜態(tài)代理和動(dòng)態(tài)代理用法詳解

    這篇文章主要介紹了 Spring AOP里的靜態(tài)代理和動(dòng)態(tài)代理用法詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • SpringBoot攔截器以及源碼詳析

    SpringBoot攔截器以及源碼詳析

    攔截器在我們平時(shí)的項(xiàng)目中用處有很多,如:日志記錄(我們后續(xù)章節(jié)會(huì)講到)、用戶登錄狀態(tài)攔截、安全攔截等等,所以下面這篇文章主要給大家介紹了關(guān)于SpringBoot攔截器以及源碼的相關(guān)資料,需要的朋友可以參考下
    2021-07-07
  • java實(shí)現(xiàn)圖片壓縮的思路與代碼

    java實(shí)現(xiàn)圖片壓縮的思路與代碼

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)圖片壓縮的思路與代碼,將較大的圖片按照指定的寬高,以寬為基準(zhǔn),或高為基準(zhǔn)按照等比例壓縮圖片,感興趣的小伙伴們可以參考一下
    2016-03-03
  • Java Volatile關(guān)鍵字你真的了解嗎

    Java Volatile關(guān)鍵字你真的了解嗎

    這篇文章主要為大家介紹了Java Volatile關(guān)鍵字,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2021-12-12
  • Java數(shù)據(jù)結(jié)構(gòu)之棧的基本定義與實(shí)現(xiàn)方法示例

    Java數(shù)據(jù)結(jié)構(gòu)之棧的基本定義與實(shí)現(xiàn)方法示例

    這篇文章主要介紹了Java數(shù)據(jù)結(jié)構(gòu)之棧的基本定義與實(shí)現(xiàn)方法,簡(jiǎn)單描述了數(shù)據(jù)結(jié)構(gòu)中棧的功能、原理,并結(jié)合java實(shí)例形式分析了棧的基本定義與使用方法,需要的朋友可以參考下
    2017-10-10
  • Springboot如何集成websocket

    Springboot如何集成websocket

    這篇文章主要介紹了Springboot如何集成websocket問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07

最新評(píng)論

洛川县| 武鸣县| 伊吾县| 定南县| 呈贡县| 泸定县| 遂溪县| 全椒县| 平凉市| 左贡县| 宁津县| 游戏| 榆林市| 丽水市| 德钦县| 周口市| 清丰县| 会理县| 高雄县| 连江县| 乌鲁木齐县| 成武县| 隆昌县| 香河县| 昆山市| 石首市| 沙雅县| 德钦县| 乌苏市| 凯里市| 蓬安县| 太原市| 鄂温| 东城区| 祥云县| 柳州市| 甘孜| 河池市| 徐州市| 青阳县| 鄯善县|