どのようにクエリキャッシュはNHibernateはでパフォーマンスが向上していますか?
-
23-09-2019 - |
質問
どのようにクエリが作品をキャッシュし、それがどのようにNHibernateは?
でのパフォーマンスが向上しないん解決
クエリがキャッシュされている場合は、
、NHibernateのは、クエリの結果のエンティティのIDをキャッシュします。
唯一そのID -非常に重要なことは、実体そのものをキャッシュしません。あなたはほぼ確実にそれらのエンティティはまた、2番目のレベルのキャッシュでキャッシュ可能になるように設定されていることを確認したいと、この手段。それ以外の場合は、NHiberateは、クエリキャッシュからエンティティのIDを取得しますが、その後、実際のエンティティを取得するためにデータベースに行くことを余儀なくされます。それはちょうど最初の場所でのデータベースに行くよりも高価かもしれない!
はまた、重要な:クエリがその正確なSQLとパラメータ値に基づいてキャッシュされます。これらのいずれかの違いは、データベースがヒットされることを意味します。あなたはおそらく唯一の彼らの入力にはほとんど差異があり、これらのクエリをキャッシュしたいので。
他のヒント
あなたは、クエリを実行したときにキャッシュNHibernateはどこか内部のクエリ結果を格納する可能
。あなたは再び同じパラメータでクエリを実行しようとすると、それがないデータベースから、キャッシュから結果が得られますし、もちろん、それははるかに高速です!しかし、他のアプリがバックグラウンドでデータベースを変更できることを注意してください!しかし、NHibernateは、キャッシュを更新することができます。
は、それを使用することによりNHibernateは、それがキャッシュにいただきました!にアクセスし、データストアにアクセスする必要はありません。
所属していません StackOverflow