我们有一个冗长的数据库操作。当我们使用enlist = true执行此操作时,需要29分钟才能完成。当我们使用enlist = false执行此操作时,只需15分钟即可完成。如此巨大的性能影响是什么原因?它与数据库服务器有关吗?
我们如何避免它?请分享您的想法。
数据库:SQL Server 2005
Frameowrk:.Net 3.0
答案 0 :(得分:4)
我们如何避免它?
和
csv文件中的总行数为100000。
在这种情况下,使用SqlBulkCopy
将100,000行写入临时表(基本和单独的表,不是事务表的一部分;没有触发器,外键等)。数据进入临时表后,使用TSQL(直接或SPROC)从临时表中执行INSERT
到事务性表,即数据所在的位置。交易只需跨越最后一次操作。
这实现了几个关键的事情:
SqlBulkCopy
使用与批量插入相同的API;它是通过网络将大量数据转移到SQL Server的最快方法INSERT
是事务性的,但此时所有数据都是本地的