2012-03-12 101 views
0

Hibernate緩存併發策略是否也適用於其查詢緩存(例如,可緩存查詢獲取一些標量數據,然後兩個查詢同時修改該標量數據)?如果不是,查詢的併發更新(或讀取/更新)會發生什麼情況?如果是,如何爲查詢緩存指定它們?Hibernate查詢緩存併發策略

+0

這是一篇很好的文章:http://tech.puredanger.com/2009/07/10/hibernate-query-cache/ – shrini1000 2012-04-06 04:48:56

回答

1

該策略如下。

時間戳高速緩存記錄每個表的最後更新時間戳。

每次執行一次可緩存查詢並且結果都在查詢緩存中時,Hibernate會檢查查詢結果的時間戳比查詢涉及的每個表的更新時間戳更大(更近)。如果更大,那麼結果不會過時,並且返回緩存的結果。如果降低,則緩存的結果可能過時,並且對數據庫執行查詢。

+0

噢!感謝你的回答。這是否意味着查詢緩存本身永遠不會更新,但只會失效,從而避免任何併發更新問題? – shrini1000 2012-03-14 08:36:11

+0

我不知道緩存如何處理緩存的併發更新。但它是一個從多個線程訪問的緩存。我猜想使用了同步和併發集合。你並不需要關心。 – 2012-03-14 08:41:42

+0

好吧,對於二級緩存,非嚴格讀寫和讀寫策略的行爲會有所不同,並會影響性能。所以我想知道是否類似的東西也適用於查詢緩存,影響其性能。因此,這個問題。 – shrini1000 2012-03-15 02:55:16