Mysql-增刪改查
阿新 • • 發佈:2022-05-12
快取
更多的瞭解
因為我們有更好的快取
我們都知道,進行資料庫的快取一次操作,時間相對比較長
怎麼提高查詢效率
MyBatis提供了快取,執行完sql查詢後,把結果暫存到,一個物件
當我們再次執行同樣的查詢的時候,先從快取中查詢,,如果查詢到了,則返回結果
如果沒有查詢到了,則在進行資料庫的查詢
MyBatis一共提供了兩種快取,分別是一級快取和二級快取
一:一級快取SQLSession
第一次查詢的時候,進行了sql的預編譯,很明顯進行了資料庫的操作
第二次查詢的時候,沒有編譯sql,直接輸出結果
證明第二次查詢的時候,沒有查資料庫,而是直接從一級快取sqlSession中拿到結果
二級快取SqlSessionFactor
二級快取何時存入?
在關閉sqlSession·後,才會把sqlSession中快取的資料新增到namespace的二級快取中
開啟了二級快取後,還需要將pojo類實現Serializable介面,因為二級快取可能用到記憶體
以及磁碟的空間,如果用到磁碟的空間,肯定要序列化,想要序列化,不必須實現呢Serializabke
介面
怎麼用?
一級快取預設存在,二級快取需要手動開啟
測試
一定注意,一定是同一個SQLSessionFactory 建立不同的sqlSession例項
上面的程式碼,理論上講,第一次查詢的時候,肯定要查資料庫的,sqlSession關閉的時候,快取放在sqlSession例項中
第二次查詢的時候,理論上講從sqlSessionFactory中查詢
但是我們發現任然發現從資料庫中查詢
第二次查詢的時候不再有預編譯了
而且出現了命中率
兩次命中一次
足以證明,第二次查詢資料來自二級快取sqlSessionFactory