Оптимизация вставок SQL для сторонней программы ETL - PullRequest
0 голосов
/ 08 февраля 2011

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

Наша текущая установка работает под управлением SQL Server 2008 R2 Standard Edition. Здесь задействованы два сервера: SQL Server и другой сервер, известный как пакетный сервер. По сути, происходит то, что Batch-сервер запрашивает у SQL Server набор строк из таблицы, он сохраняет эти строки в памяти на Batch-сервере и проходит здесь несколько преобразований. После преобразования / очистки данных их необходимо загрузить обратно в несколько разных таблиц на сервере базы данных. В настоящее время это делается с помощью ряда операторов вставки, помещенных в SP_PREPARE. Затем он продолжает выполнение оператора sp_execute один раз для каждой строки, которую нужно вставить (десятки миллионов раз).

Прошло много времени с тех пор, как я использовал IBM Datastage, но, похоже, я помню, что он пытался делать эти вставки по умолчанию аналогично и в результате был ужасно медленным.

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

Любые предложения или идеи будут с благодарностью!

Andrew

Ответы [ 2 ]

0 голосов
/ 16 февраля 2011

Если они используют элемент управления OLEDB Destination, на скорость вставки влияет несколько факторов:

  1. Установите его в режим быстрой загрузки и нажмите любой дублирует (через вывод ошибок) в таблица переполнения, которая может быть повторно вставлен с использованием обычной таблицы нагрузки. Нормальная скорость нагрузки не менее На 2 порядка медленнее, чем Быстрая загрузка.
  2. Установите DefaultBufferMaxRows для задачи контроль выше, чтобы вставить больше предметы в партии. Тем не менее, даже 1 дубликат в партии заставляет весь пакет с выводом ошибки.
0 голосов
/ 08 февраля 2011

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

...