查詢緩存


一、概念

        查詢緩存指的是在內存或者外存上建立一個存儲空間,用來保存上次的查詢結果,夏促再進行同樣的查詢是,就直接從內存或者外存中讀取,大大提升查詢效率

二、一級緩存

        范圍:一個sqlsession對象,當一個sqlsession對象關閉后,對應的一級緩存會被清空。

        清理條件:執行了增、刪、改的commit()方法

                          

三、二級緩存(被多個sqlsession對象共享)

        范圍:相同namespaced生成的mapper對象下所有的sqlsession對象

         清理條件:執行了該Mapper對象的增、刪、改方法

        原理:sqlsession1------->studentMapper中的查詢方法(從數據庫中獲取)------------>寫入二級緩存

                   sqlsession2-------->studentMapper中的查詢方法(從二級緩存中獲取)

                   sqlsession3-------->studentMapper提交的commit()方法(增、刪、改)---------->清理二級緩存

      備注:兩個對象執行的方法和代碼均相同,不同之處是sqlseesion1中的數據是從數據庫中取,sqlsession2中的數據從二級緩存中取

       1. 二級緩存的使用:

                 (1)開啟二級緩存

                      1>.Mybatis配置文件       

<setting name="cacheEnable" value=""></setting>

 

                     2>.mapper.xml文件

                        在mapper內部加上<cache />

                 (2)對象實現序列化

        2.禁用二級緩存

               

<select id="queryById" parameter="int" resultType="User" useCache="false">
    select  * from  user where userid=#{userid}
</select>

 

 

四、commit()清理緩存的原因

        對數據庫進行增刪改查操作,如果不及時清理緩存,就會丟失數據的實時性,造成臟讀

         如果有特殊情況,想要在執行commit()方法時並不進行清理緩存,可以在增刪改查的標簽里設置 flushCache="false"

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM