我遇到性能問題,其中一個聚合包擁有大量實體(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