SqlBulkCopy - 在较小的数据集(即1000行)上有用吗?

.net performance sqlbulkcopy

在我遇到实现SqlBulkCopy和性能测试的麻烦之前,我想知道是否有人对何时应该使用它有任何指导,以及是否最好甚至在相对较小的数据集(1000行左右)上使用它。在这种情况下使用它是否有任何开销,或者在插入合理数量的行时是否应始终使用它?

一般承认的答案

我可能会将它用于1000行,但您可以使用命令批处理执行类似操作

请注意,对于1000行,最简单的方法可能是将所需的数据抛出到具有正确形状的DataTable中,这非常简单。对于较大的集合,编写一个定制的IDataReader (用于流式传输记录,而不是先将它们全部缓存在内存中)是我的首选。

要注意的另一件事是交易,耐用性等;当使用SqlBulkCopy我倾向于使用它来推入临时表,然后调用sproc(或只是一个简单的TSQL命令)将数据推送到真实表。除了单个基于集合(和完全记录)的INSERT之外,这样可以保持真实表的清洁。

但是如果你只想测量性能,把它扔进真正的表应该可以得到一个大概的估计。


热门答案

SqlBulkCopy不会在事务日志中写入,这使得它比手动插入每一行更快。

即使是1000行,也应该有速度增益,特别是如果它是高度访问的操作,例如来自Web应用程序。



许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因