MyBatis學習筆記——14MyBatis查詢緩存(一級緩存,二級緩存)

MyBatis學習筆記——14MyBatis查詢緩存(一級緩存,二級緩存)

完整學習路線:https://blog.csdn.net/qq_40163148/article/details/89668242

爲什麼需要緩存?

爲了減輕數據庫壓力,提高數據庫性能

一級緩存和二級緩存的作用範圍

在這裏插入圖片描述

1.一級緩存(默認開啓)

在操作數據庫時需要構建sqlSession對象,在對象中有一個數據結構(hashMap)用於存儲緩存數據,不同的SqlSession之間的緩存數據區域(HashMap)互不影響

一級緩存的作用範圍:sqlSession範圍

在這裏插入圖片描述

第一次查詢id爲1的用戶寫入sqlsession發送sql語句

第二次查詢id爲1的用戶讀取sqlsesssion不發送sql語句

當對數據庫進行更改時清除緩存即commit,這樣做的目的是爲了避免讀髒數據

在這裏插入圖片描述
在這裏插入圖片描述

2.二級緩存(默認開啓,不過需要在每個mapper裏重新開啓)

二級緩存的作用範圍:全局 但是每個mapper(namespace)擁有自己的二級緩存區域(它是跨sqlsession的),多個SqlSession公用二級緩存

二級緩存需要注意的幾點

####

1.全局二級緩存默認開啓

在這裏插入圖片描述

2.每個mapper開啓緩存

在這裏插入圖片描述

繼承Serializable接口

3.給bean進行序列化

在這裏插入圖片描述

在這裏插入圖片描述

Cache Hit Ratio [com.lipengge.mbt.mapper.OrderCustomMapper]: 0.0 代表緩存命中率第一次發出sql語句 沒有緩存沒有命中

Cache Hit Ratio [com.lipengge.mbt.mapper.OrderCustomMapper]: 0.5 代表命中率爲50% 第二次有緩存所以命中

當對數據庫進行更改時清除緩存即commit,這樣做的目的是爲了避免讀髒數據,之後查詢又會重新發送sql語句

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章