問題タブ [second-level-cache]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
hibernate - キャッシング/第2レベルのキャッシュにいつ行くのですか?詳細を含む実際的なシナリオはありますか?
私は、MS SQLServer2005データベースを使用してSpring-Hibernateで開発された自動車メーカーに属するWebベースのアプリケーションに取り組んでいます。
このアプリケーションを介して、エンドユーザーはWebベースのインターフェイスを介して車、バス、トラックなどの作成を要求できます。ユーザーがログインすると、車両の技術仕様をキャプチャするためのHTMLフォームが表示されます。たとえば、誰かが車をリクエストしたい場合は、エンジンのメーカー/モデル、タイヤ、シャーシの詳細などを指定できます。全体で100のフォーム要素があります。 [車両リクエストの作成]画面で、オプションを表示するためのドロップダウン(選択ボックス)が30%あります(つまり、ユーザーはそのうちの1つを選択できます)。これらのSELECTボックスは、データベース(マスターデータ)に保存されている値から入力されます。このマスタデータは、バックエンドでストアドプロシージャを実行することにより、少なくとも週に1回変更されます。
このアプリケーションには世界中で約10,000人のユーザーがおり、新しい車両のリクエストでは毎日最大で5000ヒットが見込まれます。つまり、5000回の車両作成フォームが表示されます。
私の質問は、マスターデータから表示されるフォームフィールドの値を保存するために第2レベルのキャッシュオプションを使用する必要がありますか?
これらの値は、週に1回だけ変更される一連のマスターテーブルから表示されるため、マスターデータのキャッシュはパフォーマンスの向上に役立つと思いますが、アプリケーションをに移動していないため、よくわかりません。実際のパフォーマンスを確認し、本当にキャッシングが必要かどうかを確認するためのプロダクション。
キャッシングを使用する場合、それを構成する方法を理解するために1〜2週間を費やす必要があるかもしれませんが、実際のメリットが見られずに1〜2週間を費やしたくありませんか?
これについて専門家の助けが必要です。また、誰かが実際のシナリオを共有できる場合は、キャッシングが本当に必要な場合に非常に役立ちます。
hibernate - JPA 2.0 を Hibernate 3.5.2 で構成して、EHCache をレベル 2 キャッシュおよびクエリキャッシュとして使用する方法は?
EHCache を使用するように純粋な休止状態を構成する方法をいくつか見つけました。しかし、キャッシュを使用するように JPA2.0 EntityManager を構成する方法の説明が見つかりません。Hibernate 3.5.2 は、私の JPA2.0 プロバイダーです。
edit//@Cacheable(true)
エンティティには十分ですか? または@org.hibernate.annotations.Cache
、エンティティの構成に使用する必要がありますか?
java - Hibernateの第2レベルのキャッシュにキャッシュされるクラス
どのクラス(つまり、どの異なるタイプのインスタンス)が休止状態の第2レベルのキャッシュにキャッシュされているかを確認する方法はありますか?
java - L2 ハイバネート キャッシュを調べる方法はありますか?
プロジェクトに Oracle Coherence (キャッシュ ソフトウェア) を接続するタスクがあります。これを使用する 1 つの方法は、Level2 Hibernate キャッシュです。休止状態が L2 キャッシュから結果を取得するタイミングを確認したい。どうやってやるの?どちらの方法も適切です。可能であれば、ある種のリスナー、または Cache オブジェクトへの直接アクセスです。前もって感謝します。
asp.net-mvc - SharedCacheとNhibernateを使用してキャッシュされたエンティティに有効期限を設定する
現在作成しているMVCWebアプリがあります。2番目のアプリは、私のWebアプリが読み取るデータベースにデータを公開します。
NHibernateのキャッシュプロバイダーとしてSharedCacheを使用しており、エンティティに「有効期限」を割り当てたいと考えています(データの鮮度を保証できるように)。一部のエンティティはめったに更新されず、他のエンティティは定期的に更新されることを知っています。有効期限が異なるさまざまなキャッシュ領域を用意するのが理想的です。
SysCacheを使用してこれを行う方法の例をウェブ上で数多く見てきましたが、SharedCacheの例は見つかりませんでした。
前もって感謝します。
nhibernate - SysCacheを使用したセッション間でのNHibernateキャッシングエンティティ
Webアプリケーションを開発していますが、Webリクエスト間でキャッシュを維持したいと考えています。第1レベルのキャッシュはセッションごとのみであることを認識しています。第2レベルのキャッシュを有効にしており、これはクエリに対して機能しています。
ただし、第2レベルのキャッシュはエンティティを「取得」するためには機能しないようです...したがって、アプリケーションが実行するDB作業のほとんどは、Webリクエスト間でキャッシュされていません。
これは正常な/望ましい動作ですか?データベースへのラウンドトリップが多い特定のページを確認していますが、各クエリは高速ですが、エンティティをキャッシュできれば、これらは不要のようです。
編集
さて、私は第2レベルのキャッシュを有効にして、クエリを処理しています。私はそれをエンティティに対して機能させることができないようです。私がCache.Is(c => c.ReadWrite())
テストしているメインエンティティには(流暢なnhibernate)があります。しかし、いや、それでも毎回DBにヒットします。何か案は?
編集
私は次のようなトランザクションを使用してみました:
私のマッピングはそのようなものです(そしてあなたは私たちが厄介なスキーマを持っているのを見ることができます):
ただし、これはまだ2次キャッシュからフェッチしていないようです。
ちなみに、私はオンラインで多くの例を使用していますが、キャッシュヘルパーCache.ReadWrite()
のメソッドしか表示できないので、試しています-流暢なインターフェイスは変更されましたか?Is
Cache.Is(c => c.ReadWrite())
orm - EntityManager (JPA) L1 または L2 キャッシュ サイズに制限を設定する方法
L1 または L2 キャッシュのサイズ制限を設定する方法。キャッシュサイズを増やすことを懸念しています。1 つの方法は、キャッシュのタイムアウトを定義することですが、キャッシュ サイズの制約を作成できるかどうかを知りたいですか?
RGDSナビ
hibernate - JPA/HIBERNATE - キャッシュされたオブジェクト インスタンスは ID だけでインデックス付けされていますか?
おそらくそれは基本的な質問ですが、Web のどこにも答えが見つかりませんでした。
私は第 2 レベルのキャッシュ (ehcache を使用) を使用しようとしていますが、ロードしようとするたびにいくつかのオブジェクトがデータベースから取得されていることを確認しました。唯一の違いは、id ではなく、運ぶプロパティによって取得していたことです。私が作業しているシステムで URL を作成するために使用される SEO フレンドリ名。jpa/hibernate はオブジェクトの ID だけでキャッシュからオブジェクトを取得できますか? クエリキャッシュをアクティブにする必要なく動作させる方法はありますか?
performance - 第 2 レベルのキャッシュを使用して hibernate/jpa で大きな選択を最適化する
特定のサブタイプを持つ JPA で表されるユーザー オブジェクトがあります。たとえば、ユーザー、サブクラスの管理者、および別のサブクラスのパワー ユーザーについて考えてみてください。
10 万人のユーザーがいるとしましょう。パフォーマンスを向上させるために、Ehcache を使用して第 2 レベルのキャッシュを正常に実装し、それが機能していることを検証しました。 http://docs.jboss.org/hibernate/core/3.3/reference/en/html/performance.html#performance-cache
load メソッドを呼び出すと機能することはわかっています (つまり、SQL クエリを呼び出すのではなく、キャッシュからオブジェクトをロードします)。これは、休止状態レベルでログを記録し、より高速であることも確認して確認しました。
ただし、実際にはすべてのユーザーのサブセットを選択したいと考えています...たとえば、パワーユーザーの数を数えたいとしましょう。
さらに、私のユーザーには関連付けられた ZipCode オブジェクトがあります... ZipCode オブジェクトも 2 番目のレベルでキャッシュされます...私が実際にやりたいことは、次のようなクエリを実行できるようにすることです...私は New に何人のパワー ユーザーを持っていますか?ヨーク州...
ただし、私の質問は...データベースではなく第2レベルのキャッシュにヒットするクエリを作成するにはどうすればよいですか。私の第 2 レベルのキャッシュは読み取り/書き込み用に構成されていることに注意してください...新しいユーザーがシステムに追加されると、自動的にキャッシュに追加されるはずです...また...クエリキャッシュを簡単に調査したことに注意してください。これは複数回実行されるクエリであるため、適用できるかどうかはわかりません...私の問題は、とにかくデータが第2レベルのキャッシュにある必要がある場合です。クエリを書いてもデータベースはヒットしません。
乾杯、ブライアン
nhibernate - Newb用のNhibernate第2レベルキャッシュ
FluentNHibernateの第2レベルのキャッシングに頭を悩ませようとしています。これまでのところ、私は次のことを行いました。
- キャッシングdllへの参照を追加しました
セッションファクトリを作成するときに、次を追加しました。
c.SetProperty( "cache.provider_class"、 "NHibernate.Caches.SysCache.SysCacheProvider、NHibernate.Caches.SysCache");
c.SetProperty( "cache.use_second_level_cache"、 "true");
c.SetProperty( "cache.use_query_cache"、 "true");
Cache.ReadWrite();を追加しました。ClassMapファイルにキャッシュしたいすべてのエンティティに対して例:
public class CountryMap:ClassMap {public CountryMap(){Table( "Countries"); Id(x => x.CountryID); Map(x => x.CountryName); Cache.ReadWrite(); }}
ここで、マッピングにCache.ReadWrite()を持つエンティティを取得しようとすると、セッションファクトリ(シングルトン)の期間中はキャッシュされると想定しました。ただし、データベースはすべての要求でヒットするため、これは当てはまらないようです。これが私が持っているいくつかの質問です:
- セッションのCacheModeプロパティは何をしますか?私のセッションは、Webリクエストの期間中続きます。セッションを作成するときにこれを設定する必要がありますか?その場合、何に設定する必要がありますか?
- コミットが行われない限りキャッシュが更新されないことをどこかで読みました。データベースに情報を挿入/更新するときにのみデータをコミットします。たとえば、国のリストを含む単純なページがある場合、必要なすべてのデータを取得しますが、変更を加える必要がないため、データをコミットしません。これは、このデータがキャッシュされないことを意味しますか?これは、データベースが追加された後にのみデータがキャッシュされることを意味するため、これを間違って読んだと確信しています。
お役に立てれば幸いです。ありがとう