2009-08-26 6 views
0

私は実装にnhibernateを使用しました。多くのデータベースフェッチがあり、処理時間を短縮するために、クエリキャッシングを有効にして、開始時にアプリケーションにフルテーブルデータをロードしました。その後、それに対してlinqをしました。セカンダリレベルキャッシングとクエリキャッシュが有効になります。それは動作していますが、何度か処理を行うと、ログファイルで、キャッシュされたテーブルに対するプライマリキーのクエリが表示され、そのテーブルの各行に対してクエリが実行されます。私はそれが起こっていると思う。なぜなら、私の質問は条件なしで全テーブルに対してだからだ。私のコードやその他の問題で何か問題があるため、これはわかりません。より少ない数のエンティティでそれを行うと、それは機能しているようです。誰もがこの問題について何か知っていますか?クエリキャッシュキャッシュは行の主キーのみですか?エンティティはクエリキャッシュにキャッシュされますか?

答えて

2

クエリキャッシングは、クエリ結果の主キーのみをキャッシュします。クエリキャッシュが キャッシュ 、結果セット内の任意のエンティティの状態をないこと

注;:query cache documentationから識別子 の値と値の型の結果のみをキャッシュします。したがって、 クエリキャッシュは、第2レベルの キャッシュと共に、 を常に使用する必要があります。

関連する問題