1

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

4

2 回答 2

1

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

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

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

但是,如果您只是想衡量性能,则将其放入真实表中应该可以得到一个大概的估计。

于 2011-01-27T11:08:27.667 回答
1

SqlBulkCopy 不会写入事务日志,比手动插入每一行要快。

即使是 1000 行,速度也应该有所提高,尤其是当它是高度访问的操作时,例如来自 Web 应用程序的操作。

于 2011-01-27T11:49:10.127 回答