查詢緩存總結

進過幾天的測試對查詢緩存和二級緩存作個初步的總結
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到數據庫中查詢
相關文章
相關標籤/搜索