Как BULK INSERT работает внутренне?

Техника, которую мы используем на работе, должна запросить файл JavaScript с помощью запроса Ajax и затем оценки () возврат. Если Вы пользуетесь библиотекой прототипа, они поддерживают эту функциональность в своем Ajax. Вызов запроса.

9
задан pilcrow 10 November 2009 в 21:20
поделиться

3 ответа

BULK INSERT выполняется внутри процесса с ядром базы данных SQL Server и, таким образом, избегает передачи данных через сетевой уровень клиентского API - это делает его быстрее, чем BCP и DTS / SSIS.

Кроме того, с помощью BULK INSERT вы можете указать ORDER BY данных, и если это то же самое, что и PK таблицы, то блокировка происходит на уровне PAGE. Записи в журналы транзакций также происходят на уровне страницы, а не на уровне строки.

В случае обычного INSERT блокировка и запись в журнал транзакций выполняются на уровне строк. Это делает BULK INSERT быстрее, чем оператор INSERT.

6
ответ дан 4 December 2019 в 23:06
поделиться

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

Тогда, что, возможно, более интересно, разработчик БД может (я не знаю, есть ли какие-то конкретные поставщик действительно делает это) начинают умничать - они могут смотреть на набор записей, которые нужно вставить, и вместо того, чтобы реорганизовывать страницы данных для размещения отдельных записей, могут производить массовую реорганизацию страниц для обеспечения новых вставок, аналогично мы можем представить, что перемешивание индексы можно было бы сделать более эффективно, если бы мы знали, что вставляем набор записей.

1
ответ дан 4 December 2019 в 23:06
поделиться

Внутри он преобразуется в набор записей OLEDB, а затем загружает таблицу.

Я не особо задумывался об этом, но предполагаю, что это быстрее при запуске на SQL Server коробка, а не клиент. Кроме того, вы можете управлять ограничениями, которые вы не можете сделать с помощью обычного INSERT

From BOL

0
ответ дан 4 December 2019 в 23:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: