SqlBulkCopy是否是高效单行插入的错误选择?

时间:2016-11-09 07:45:58

标签: c# sql-server windows-services sqlbulkcopy

早上好。

我有一个我在C#中编写的服务,它每隔15秒左右执行并插入一行。此间隔是用户可定义的,但目前15秒是目标间隔。

我已经阅读了这篇文章:SqlBulkCopy on a single record?,它确实解释了使用常规插入而不是执行单行批量插入的吞吐量优势。但它也提到(或暗示)常规插入在CPU上比批量插入更重一些。

由于我正在编写的服务是一个支持服务,并且由于插入在给定的时间间隔内被人为限制为仅1,我想知道上面的含义是否是在常规插入上使用SqlBulkCopy的理由。显然,我希望我的服务尽可能轻量化。

1 个答案:

答案 0 :(得分:2)

你文章的答案说SqlBulkCopy的速度要慢4.4倍,并且是一个简单SQL命令的CPU的两倍。你误解了答案(或者我做了),它表明SqlBulkCopy在CPU上比常规插入更重,这更有意义。

答案很简单:如果您100%确定只需要插入一条记录,请坚持使用SQL命令。

甚至我的库C# Bulk Operations也不会使用SqlBulkCopy,直到它达到特定的行数,通常为10,因为SqlBulkCopy太重了。