二級快取的策略
當多個併發的事務同時訪問持久化層的快取中的相同資料時,會引起併發問題,必須採用必要的事務隔離措施。
在程序範圍或集群範圍的快取,即第二級快取,會出現併發問題。因此可以設定以下4種型別的併發訪問策略,每一種策略對應一種事務隔離級別。
● 唯讀快取(read-only)
如果應用程式需要讀取乙個持久化類的例項,但是並不打算修改它們,可以使用read-only快取。這是最簡單,也是實用性最好的策略。
對於從來不會修改的資料,如參考資料,可以使用這種併發訪問策略。
● 讀/寫快取(read-write)
如果應用程式需要更新資料,可能read-write快取比較合適。如果需要序列化事務隔離級別,那麼就不能使用這種快取策略。
對於經常被讀但很少修改的資料,可以採用這種隔離型別,因為它可以防止髒讀這類的併發問題。
● 不嚴格的讀/寫快取(nonstrict-read-write)
如果程式偶爾需要更新資料(也就是說,出現兩個事務同時更新同乙個條目的現象很不常見),也不需要十分嚴格的事務隔離,可能適用nonstrict-read-write快取。
對於極少被修改,並且允許偶爾髒讀的資料,可以採用這種併發訪問策略。
● 事務快取(transactional)
transactional快取策略提供了對全事務的快取,僅僅在受管理環境中使用。它提供了repeatable read事務隔離級別。對於經常被讀但很少修改的資料,可以採用這種隔離型別,因為它可以防止髒讀和不可重複讀這類的併發問題。
在上面所介紹的隔離級別中,事務型併發訪問策略的隔離級別最高,然後依次是讀/寫型和不嚴格讀寫型,唯讀型的隔離級別最低。事務的隔離級別越高,併發效能越低。
什麼樣的資料適合存放到第二級快取中?
1) 很少被修改的資料
2) 不是很重要的資料,允許出現偶爾併發的資料
3) 不會被併發訪問的資料
4) 常量資料
不適合存放到第二級快取的資料?
1) 經常被修改的資料
2) 絕對不允許出現併發訪問的資料,如財務資料,絕對不允許出現併發
3) 與其他應用共享的資料。
hibernate二級快取
cacheconcurrencystrategy.none cacheconcurrencystrategy.read only 唯讀模式,在此模式下,如果對資料進行更新操作,會有異常 cacheconcurrencystrategy.read write 讀寫模式在更新快取的時候會把快取裡面的資料...
hibernate 二級快取
session快取 一級快取 sql查詢結果快取,由hibernate管理 sessionfactory內建快取,內建快取是hibernate自帶的,用於存放預定義的sql以及hbm.xml描述的元資料,不可解除安裝 sessionfactory外接快取 二級快取 由外部外掛程式提供,外接快取的資料...
Hibernate二級快取
hibernate的session在事務級別進行持久化資料的快取操作。當然,也有可能分別為每個類 或集合 配置集群 或jvm級別 sessionfactory級別 的快取。你甚至可以為之插入乙個集群的快取。注意,快取永遠不知道其他應用程式對持久化倉庫 資料庫 可能進行的修改 即使可以將快取資料設定為...