2011-09-30 28 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秒。谢谢。 –