早上好。
我有一个我在C#中编写的服务,它每隔15秒左右执行并插入一行。此间隔是用户可定义的,但目前15秒是目标间隔。
我已经阅读了这篇文章:SqlBulkCopy on a single record?,它确实解释了使用常规插入而不是执行单行批量插入的吞吐量优势。但它也提到(或暗示)常规插入在CPU上比批量插入更重一些。
由于我正在编写的服务是一个支持服务,并且由于插入在给定的时间间隔内被人为限制为仅1,我想知道上面的含义是否是在常规插入上使用SqlBulkCopy的理由。显然,我希望我的服务尽可能轻量化。
答案 0 :(得分:2)
你文章的答案说SqlBulkCopy的速度要慢4.4倍,并且是一个简单SQL命令的CPU的两倍。你误解了答案(或者我做了),它表明SqlBulkCopy在CPU上比常规插入更重,这更有意义。
答案很简单:如果您100%确定只需要插入一条记录,请坚持使用SQL命令。
甚至我的库C# Bulk Operations也不会使用SqlBulkCopy,直到它达到特定的行数,通常为10,因为SqlBulkCopy太重了。