2011-08-03 7 views
1

私はehcacheが新しく、私は必要なものを正確に見つけることができません。ehcacheの中にソートされたリストを格納しています

私は休止状態を使用しています。私は高速にクエリする必要がある1つの大きなテーブル(500k +アイテム)を持っています。

ユーザーは、4つの異なる属性でソートされたこの表をページ単位で収集する必要があります。私はこのテーブルを事前にソートして、4つの異なるキャッシュリストに格納させました。ユーザーはまた、このテーブルを検索する機能も備えています。

どうすればいいですか?私はデータをプリフェッチし、データベースから自動的に更新したいと思います。

答えて

0

興味深い質問ですが、実際にはHibernateは必要なものすべてを提供しますが、その仕組みは少し複雑です。まず第2レベルのキャッシュ(L2)が必要です。各レコードをidで単一項目として格納します。つまり、データベースに触れることなく簡単にIDでオブジェクトを照会することができます。

これだけでは役に立ちません。クエリキャッシュが出場しています。 (リストを

SELECT c1, c2, c3, c4 
FROM table 
ORDER BY c1 ASC 
LIMIT 100,20 

このクエリを実行する最初の時間は、Hibernateはデータベースに対してこのコマンドを実行しますが、それはまた、L2に返されたすべてのレコードを格納し、結果そのものを保存します:あなたは、これに似たクエリを持っていると仮定ids)をクエリキャッシュに格納します。次に正確に同じクエリを実行すると、Hibernateはクエリキャッシュ内のidのリストを見つけて、次にL2からそれぞれのレコードを1つずつフェッチします。

少し異なるクエリを使用する場合、HibernateはSQLを実行し、その結果を別のキーの下に格納します。クエリキャッシュ用に別のキャッシュを使用し、クエリとすべてのパラメータを連結してキーを形成します。

Hibernateが完全な結果をキャッシュに保存してメモリにページングを適用するかどうか、あるいは単一のページを別々に保存するかどうかはわかりませんので、各クエリはキャッシュ内の要素数が多く、あなたがこのように行くなら、あなたが私を啓発することができれば素晴らしいだろう。

も休止を経て、この表にに任意の行を行って何らかの変更がすべてキャッシュされたが、このテーブルを含むクエリを実行無効になることに注意してください。 BTW 500Kはそれほど大きなテーブルではありません;-)。各レコードが1 KiBを占める場合、データベース全体をメモリに保持する価値があります。

+0

私はehcacheを通じて2番目のレベルのキャッシュで遊んでいましたが、必要なパフォーマンスを提供していません。各ユーザーのクエリ自体は異なります。データは読み取り専用でもありません。 1日に約1-2回更新されます。私は最初のヒットが遅くなることを望まないので、データをプリフェッチしたいのです。情報のおかげで – kgibbon

0

500Kレコードは決して大きなテーブルではありません。

テーブルと必要なインデックスがキャッシュDB側に収まるように、データベース(および基礎となるOS)を適切に構成することで、最大限のパフォーマンスを得ることができます。

Hibernateの第2レベルのキャッシュ+クエリキャッシュは、ここでは特に役立つものではありません。変更可能なデータは、さまざまな方法でページ番号を付けてソートする必要があります。

+0

ありがとう。このテーブルは、2〜3百万レコードに拡大する予定です。テーブルには同時に2つのリレーションがあることに言及しましょう。だから、大量のアイテムを並べ替えることによる最大のパフォーマンスはdb側にあると言っていますか?データをプリフェッチして2番目のレベルのキャッシュに格納する方法はありませんか? – kgibbon

+0

@kgibbonクエリキャッシュを使用すると、めったに変更されないデータに対して使用される特定のクエリに意味があります。 2〜3百万のレコード(ページが分けられ+ 4つの異なる方法でソートされた)では、クエリキャッシュでそれを行うためにかなりのオーバーヘッド(メモリとパフォーマンスに頼っている)があります。そして、変更のたびにドロップ/再フェッチする必要があります(の一部)。 – ChssPly76

+0

私の最高の賭けは何ですか?私はポストグルを使用しています。 Iveはdb用に8GBのマシンを手に入れました。私たちはまだそれを調整していません。それが私の最善の策だと思いますか?キャッシングと並べ替えを行うにはデータベースに任せますか? – kgibbon

関連する問題