Почему BCP так быстро? - PullRequest
3 голосов
/ 22 июля 2011

Таким образом, BCP для вставки данных в БД SQL Server очень и очень быстрый.Что делает, что делает это так быстро?

Ответы [ 4 ]

10 голосов
/ 22 июля 2011

В SQL Server вход BCP регистрируется совсем не так, как традиционные операторы вставки. То, как SQL решает что-то делать, зависит от ряда факторов, а некоторые вещи, о которых большинство разработчиков даже не задумываются, например, какую модель восстановления использует база данных.

bcp использует те же средства, что и BULK INSERT и классы SqlBulkCopy.

Подробнее здесь http://msdn.microsoft.com/en-us/library/ms188365.aspx

Суть в том, что эти массовые операции регистрируют меньше данных, чем обычные операции, и имеют возможность инструктировать SQL Server игнорировать свои традиционные проверки и балансировки при поступлении данных. Все это в совокупности способствует его ускорению.

8 голосов
/ 22 июля 2011

Он обманывает.

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

По сути, он может пропускать большую часть функциональности, которая делает базу данных базой данных, а затем очищать ее после себя.массово в конце.

3 голосов
/ 22 июля 2011

Основное различие, которое я знаю между bcp и обычной вставкой, заключается в том, что bcp не нужно хранить отдельную запись в журнале транзакций для каждой отдельной транзакции.

0 голосов
/ 06 марта 2014

Скорость заключается в том, что они используют BCP API драйвера ODBC для собственного клиента SQL Server.Согласно Microsoft:

http://technet.microsoft.com/en-us/library/aa337544.aspx

Утилита bcp (Bcp.exe) - это инструмент командной строки, использующий API программы массового копирования (BCP) ...

Описание функций массового копирования:

http://technet.microsoft.com/en-us/library/ms130922.aspx

...