欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Mybatis詳細對比一級緩存與二級緩存

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

基本要點

1、緩存

什么是緩存?

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

為什么使用緩存?

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

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

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

2、一級緩存(默認開啟,無法關(guān)閉)

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

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

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

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

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

3、二級緩存

1)定義

二級緩存是基于namespace級別的緩存,可以理解為單個Mapper級別的緩存

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

2)工作機制

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

3)開啟步驟:

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

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

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

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

最多可以存儲結(jié)果對象或列表的 512 個引用,返回的對象被認為是只讀的

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

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

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

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

4、緩存查詢原理

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

如果沒有,就會去一級緩存中查有沒有

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

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

相關(guān)文章

  • SpringBoot項目打包成jar后獲取classpath下文件失敗的解決

    SpringBoot項目打包成jar后獲取classpath下文件失敗的解決

    這篇文章主要介紹了SpringBoot項目打包成jar后獲取classpath下文件失敗的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • 用Java集合中的Collections.sort方法如何對list排序(兩種方法)

    用Java集合中的Collections.sort方法如何對list排序(兩種方法)

    本文通過兩種方法給大家介紹java集合中的Collections.sort方法對list排序,第一種方式是list中的對象實現(xiàn)Comparable接口,第二種方法是根據(jù)Collections.sort重載方法實現(xiàn),對collections.sort方法感興趣的朋友一起學習吧
    2015-10-10
  • Spring Boot 在啟動時進行配置文件加解密的方法詳解

    Spring Boot 在啟動時進行配置文件加解密的方法詳解

    這篇文章主要介紹了Spring Boot 在啟動時進行配置文件加解密的方法,本文通過實例給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-06-06
  • Java通過cellstyle屬性設置Excel單元格常用樣式的全面總結(jié)講解

    Java通過cellstyle屬性設置Excel單元格常用樣式的全面總結(jié)講解

    在處理Excel文件時,經(jīng)常需要對單元格進行樣式設置,以滿足特定的需求和美化要求,這篇文章主要給大家介紹了關(guān)于Java通過cellstyle屬性設置Excel單元格常用樣式的相關(guān)資料,需要的朋友可以參考下
    2024-01-01
  • Java利用遺傳算法求解最短路徑問題

    Java利用遺傳算法求解最短路徑問題

    遺傳算法(Genetic Algorithm,GA)最早是由美國的John holland于20世紀70年代提出,該算法是根據(jù)大自然中生物體進化規(guī)律而設計提出的。本文將利用遺傳算法求解最短路徑問題,需要的可以參考一下
    2022-06-06
  • Spring之IOC底層原理詳解

    Spring之IOC底層原理詳解

    這篇文章主要介紹了Spring之IOC底層原理,內(nèi)容詳細,文章簡單易懂,具有一定的參考價值,需要的朋友可以參考下
    2023-01-01
  • java.net.MalformedURLException異常的解決方法

    java.net.MalformedURLException異常的解決方法

    下面小編就為大家?guī)硪黄猨ava.net.MalformedURLException異常的解決方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • JVM方法調(diào)用invokevirtual詳解

    JVM方法調(diào)用invokevirtual詳解

    JVM調(diào)用方法有五條指令,分別是invokestatic,invokespecial,invokevirtual,invokeinterface,invokedynamic,這篇文章主要說明invokevirtual方法的調(diào)用問題,本文通過實例代碼給大家介紹的非常詳細,需要的朋友參考下吧
    2022-03-03
  • Spring中的AutowireCandidateResolver的具體使用詳解

    Spring中的AutowireCandidateResolver的具體使用詳解

    這篇文章主要介紹了Spring中的AutowireCandidateResolver的具體使用詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-04-04
  • JAVA 根據(jù)設置的概率生成隨機數(shù)的方法

    JAVA 根據(jù)設置的概率生成隨機數(shù)的方法

    本篇文章主要介紹了JAVA 根據(jù)設置的概率生成隨機數(shù)的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08

最新評論