2016-11-09 2 views
0

Доброе утро.Является ли SqlBulkCopy неправильным выбором для эффективных однострочных вставок?

У меня есть служба, которую я пишу на C#, которая выполняет и вставляет одну строку каждые 15 секунд или около того. Этот интервал определяется пользователем, но в настоящий момент 15 секунд - это целевой интервал.

Я прочитал эту статью: SqlBulkCopy on a single record?, которая четко объясняет преимущества пропускной способности использования обычной вставки при выполнении вставки в одну строку. Но он также упоминает (или подразумевает), что регулярная вставка немного тяжелее на CPU, чем объемная вставка.

В качестве службы I Я пишу службу поддержки, и поскольку вставка искусственно ограничена только 1 в заданный интервал, мне интересно, оправдывает ли импликация выше использование SqlBulkCopy над обычной вставкой. Очевидно, я хочу, чтобы мое обслуживание было максимально легким.

+2

Использование массовой копии для вставки одной записи - это как запуск космического корабля, чтобы посетить вашего дядю по улице. вы делаете математику. –

ответ

2

Ответ в вашей статье говорит о том, что SqlBulkCopy в 4,4 раза медленнее и использует двойной процессор простой команды SQL. Вы неправильно читаете ответ (или я это сделал), он утверждает, что SqlBulkCopy более тяжел на процессоре, чем обычная вставка, что имеет больше смысла.

Ответ прост: придерживайтесь команды SQL, если вы на 100% уверены, что нужно вставить только одну запись.

Даже моя библиотека C# Bulk Operations не использует SqlBulkCopy, пока не достигнет определенного количества строк, которое обычно равно десять, потому что SqlBulkCopy слишком тяжелый.

Смежные вопросы