什么是緩存?
在講解MyBatis的緩存機制之前,我們先來了解什么是緩存。
緩存就是將我們經常查詢的數據的結果保存到一個內存中(緩存就是內存中的一個對象),那么在下一次查詢的時候就不用到數據庫文件中查詢,而是從內存中獲取,從而減少與數據庫的交付次數提高了響應速度。
假如有一條數據的查詢量非常大,且內容基本不變,反復查詢就會讓數據庫壓力變大,這時我們就可以將數據存在內存緩存中,這樣就大大提高的了查詢效率,同時緩解了數據庫壓力。
MyBatis的緩存機制MyBatis提供了一級緩存和二級緩存
一級緩存:也稱為本地緩存,用于保存用戶在一次會話過程中查詢的結果,用戶一次會話中只能使用一個sqlSession,一級緩存是默認開啟的。在同一個 sqlSession 中兩次執行相同的 sql 語句,第一次執行完畢會將數據庫中查詢的數據寫到緩存(內存),第二次會從緩存中獲取,從而提高查詢效率。當一個 sqlSession 結束后該 sqlSession 中的 一級緩存也就不存在了。
二級緩存:也稱為全局緩存,是mapper級別的緩存,是針對一個表的查結果的存儲,可以共享給所有針對這張表的查詢的用戶。二級緩存是多個 SqlSession 共享的,其作用域是 mapper 的同一個 namespace,不同的 sqlSession 兩次執行相同 namespace 下的 sql 語句且向 sql 中傳遞參數也相同,即最終執行相同的 sql 語句,第一次執行完畢會將數據庫中查詢的數據寫到緩存(內存),第二次會從緩存中獲取數據,而不再從數據庫查詢,從而提高查詢效率。Mybatis默認沒有開啟二級緩存,需要手動配置。