我遇到性能问题,其中一个聚合包拥有大量实体(1000+)。通常它最多只包含50个实体,但有时还会包含更多。阅读大包时NHibernate速度慢
使用NHibernate profiler我发现从数据库中获取这个包的1123条记录的持续时间是18ms,但是它需要NHibernate 1079ms来处理它。这里的问题是所有这些1123条记录都有一两条附加记录。我使用fetch =“subselect”来获取这些数据,并且获取这些额外的记录需要16ms从数据库中获取,并且通过NHibernate处理2527ms。所以这一行动需要3,5秒,这太昂贵了。
我读到,这是因为更新第一级缓存是这里的问题,因为它在加载大量实体时性能变慢。但什么是很多? NHibernate Profiler说我有3145个实体加载了31个查询(这在我的情况下是绝对最小值)。这个加载的实体数量对我来说似乎不是很多。
在我们使用NHibernate v3.1.0.4000
试试看这里:http://knol.google.com/k/nhibernate-chapter-16-improving-performance# – danyolgiax