2011-09-30 66 views
0

對於NHibernate的一些類對象,我有一個相當複雜的映射。我有一切正確的映射;然而,保存這些物品需要大約10-15分鐘,而裝載它們需要21分鐘,這當然是不可接受的。關於用大量數據優化NHibernate的建議

這是我的情況。

我有3個類,讓我們稱他們爲美孚,酒吧和測試。 Foo類具有屬性,該屬性是具有Bar類的多對一映射的列表。 Bar有一個屬性,它是一個包含Test類的多對多映射的列表。最後,Test有一個屬性,該屬性是具有Bar類多對多映射的列表。所有三個類都具有與正在加載的其他類類型相關聯的各種其他屬性。

我目前沒有在那一刻,我打算努力盡快實現啓用延遲加載,但我面臨的問題是,許多爲3類屬性都馬上需要。

我的第一個問題是這個。我保存了250個Foo類,500個Bar類和1000個Test類。在加載我的第一個Foo類時,它正在加載列表中的Bar,它反過來包含一個所有1000個Test類的列表,每個Test類都有一個所有500個Bar類的列表。 NHibernate數據是否足夠清楚地知道1000個測試類已經加載,並且500個Bar類已經被加載,所以當它移動到下一個Foo類時,它不必再次加載所有的Bar和Test類?

你們會推薦什麼來提升性能?

回答

1
  1. 啓用延遲加載
  2. 檢查NHibernate的日誌,看看究竟是什麼選擇或使用NHibernate的探查
  3. 考慮使用緩存
+0

謝謝,我是有多麼懶惰是工作的一個概念性問題。開啓延遲加載有助於將加載時間從22分鐘縮短到20秒。謝謝。 –