查詢緩存總結

進過幾天的測試對查詢緩存和二級緩存做個初步的總結
1.不要隨便單獨使用查詢緩存。
比如A對象 跟B對象是一對多的關係,並且之間不配置抓取策略,然後用hibernate查詢出所有A對象,hsql爲 " from A";
(1)不配置查詢緩存的話,每次點擊都會執行上面的sql語句 from A。
(2)如果配置上查詢緩存不配置二級緩存的話,第一次點擊會執行 from A 的sql語句,而第二次點擊就會執行N(記錄數)條語句, from A where B.Aid =?。也就是會去查詢A與B對象的關聯信息,每條記錄都會發出一條語句,這樣記錄越多發出的查詢語句就越多,這樣會導致查詢速度大大降低。
原因是:二級緩存關閉了,查詢緩存緩存的是實體對象的id列表,此次查詢會根據id列表到緩存中獲取數據,但是二級緩存緩存已經被關閉,緩存中沒有數據,所以會根據id發出n條sql到數據中去查詢
(3)如果配置上查詢緩存和二級緩存,第一次會執行from A的sql語句,而第二次點擊卻不會sql語句了,
因爲開啓二級緩存和查詢緩存,查詢緩存緩存的是實體對象的id列表
hibernate會根據id列表到緩存中獲取數據,只有在緩存不存在的數據,纔會發出sql到數據庫中查詢

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