Hibernate:batch_size?第二レベルのキャッシュ?
-
19-09-2019 - |
質問
私は、Hibernateのドメインのオブジェクトを取得するドパーツによって異なったものを用いることとする。Ru,キーワードに有利なゆったり流れる負荷毎協会その他について負荷の全体をもつ。としてきれば嬉しいで妥協をします:
を一括フェッチング、Hibernateで負荷を複数の初期化されていない代理人が代理でご利用いただけます。一括フェッチングが最適化の怠け者の選択を取得。
hibernate.default_batch_fetch_size
:
を一括フェッチング、Hibernateで負荷を複数の初期化されていないプロキシ 場合にプロキシのよくあるご利用いただけます。一括フェッチングが最適化の 怠け者の選択を取得。
も見え:
hibernate.jdbc.fetch_size
:
ゼロ以外の値を決定し、JDBCのフェッチサイズ(電話ます。setFetchSize()).
もはHibernate ージョンのどこを見ればよいか分かるように次レベルのキャッシュを行うと、一括フェッチング?ん。eのいずれかの操作を行いますを取得する最初の呼び出し、次のX話のキャッシュ?その中での見積載しいもヒットのキャッシュすれば、バルクのような取引です。
場合の全コンテンツの収集がすでに含まれるキャッシュのように思いまだ実行に取得関するお問い合わせのアクセス。
感謝。
解決
したので、だいじょうぶかと思い研究現することができた掘り起への対応、自分の質問です。このコードはHibernateの流れは以下のようなものです:
コレクションの初期化?
- ありませんか?●ん一括フェッチ(項目の取得によるバッチ-フェッチのキャッシュ)
- 無?みのキャッシュの特定の項目の場合でにないバッチを取得す.
そしてもし項目コレクションに探しでしたが、キャッシュし、バッチ-フェッチしないと思う。場合には商品が見つからなかった第二次レベルのキャッシュし、バッチフェッチが起こり、またフェッチのbatched品目かどうかにかかわらずbatched項目にします。
-----例1 -----
の良い:
(三コレクション内のアイテム-バッチサイズの3) 最初の行き:
- 収集します。getItem(0)-キャッシュ|バッチ-フェッチ3項目
- 収集します。getItem(1)から読み込まれるバッチ-フェッチ
- 収集します。getItem(2)-読み込まれるバッチ-フェッチ
現在、どこか他の、あなたのその後時間:
- 収集します。getItem(0)-キャッシュヒット
- 収集します。getItem(1)-キャッシュヒット
- 収集します。getItem(2)キャッシュのヒット
-----例2 -----
の悪い:
(三コレクション内のアイテム-バッチサイズの3)
この場合、項目のインデックス0から削除されたキャッシュが(粉を山にして真ん中をキャッシュしたの項目を落とし、項目も古くは。
- 収集します。getItem(0)なキャッシュのようなバッチ3選択※id(?, ?, ?))
- 収集します。getItem(1)キャッシュについての交換による一括フェッチ-とにかく)
- 収集します。getItem(2)キャッシュについての交換による一括フェッチ-とにかく)
でのトレードオフがけることができますの数が少なくなSQLの呼び出しによるバッチだだけでなくキャッシュ。あのチケットの開してのバッチを見ると二次レベルのキャッシュする前にいると進化させることができる、データベースです。
http://opensource.atlassian.com/projects/hibernate/browse/HHH-1775
投票です。