【发布时间】:2012-06-08 04:11:25
【问题描述】:
我知道 NHibernate 并不打算进行批量插入,因为它比 SqlBulkCopy 慢大约 5 倍,但我决定使用它来简化代码。
但是,我的代码并没有慢 5 倍。它慢了 2400 倍。我正在插入大约 2500 条记录。我已经关闭了 log4net 日志记录。我在发布模式下运行它。我没有使用 id 生成器(我通过整数计数器在代码中指定它)。我正在使用无状态会话。我将批量大小设置为 100(我可以做得更多,但似乎没有帮助)。我尝试重新添加生成器,但将其类设置为“已分配”。
我没有插入任何子元素。我已经确认批量插入正在发生。
它还在调用 SELECT SCOPE_IDENTITY() 吗?但即使是这样,那仍然是一个荒谬的时间。
我不会做太多的批处理操作,所以我可以继续使用 SqlBulkCopy 进行这个过程,但我担心我的整个应用程序可能会运行得更快。
我没有 NHProf 的许可证,但我想知道现在是否可以下载试用版。
我将 NHibernate 3.3 GA 与 Syscache2 一起使用——但同样,我使用的是无状态会话。
您想查看任何 HBM、配置或代码吗?有什么建议吗?
谢谢
【问题讨论】:
-
插入2500个对象需要多少时间?
-
另外,您能否提供插入 2500 个对象和映射的代码?
标签: sql-server nhibernate bulkinsert