集合体が多数のエンティティ(1000+)を持つバッグを持つパフォーマンス上の問題を抱えています。通常、エンティティは最大50エンティティのみが含まれますが、場合によってはさらに多くのエンティティが含まれます。大きなバッグを読むときにNHibernateが遅くなる
NHibernateプロファイラを使用すると、データベースからこのバッグの1123レコードをフェッチする時間は18msですが、処理するにはNHibernate 1079msがかかります。ここで問題となるのは、1123のレコードすべてに1つまたは2つの追加レコードがあることです。 fetch = "subselect"を使用してこれらを取得し、これらの追加レコードをフェッチするにはデータベースからフェッチするのに16msかかり、NHibernateで2527ms処理します。だから、この行動だけで3.5秒かかりますが、それはあまりにも高価です。
これは、第1レベルのキャッシュを更新することが、多くのエンティティを読み込むときにパフォーマンスが低下するため、ここでの問題であるということが読み取れます。しかし、何がたくさんあるのですか? NHibernate Profilerによると、私は1145個のエンティティが31個のクエリでロードされています(私の場合は絶対最小です)。ロードされたエンティティの数は、私にはあまりないようです。我々はNHibernateはv3.1.0.4000
こちらをご覧ください:http://knol.google.com/k/nhibernate-chapter-16-improving-performance# – danyolgiax