Как ускорить работу конвейера потока данных в пакете служб интеграции
Самородов Федор Анатольевич: Как ускорить работу конвейера потока данных в пакете служб интеграции
В конвейере потока данных (data flow task) зачастую участвует большое количество преобразований. Но не все они встраиваются в конвейер одинаково.
Преобразования бывают блокирующие и неблокирующие. Неблокирующая трансформация обрабатывает одну строку и тут же передаёт её дальше по конвейеру. А блокирующая сначала собирает все строки и только после этого их обрабатывает, то есть на некоторое время блокирует работу конвейера.
Посмотрите внимательно на пример:
Заметили неприятный эффект блокировки? Операция сортировки втянула в себя уже более пяти миллионов строк, но так и не выпустила из себя ни одной строки. Остальная часть конвейера простаивает.
И только после того, как все строки поступили на сортировку, эта операция начинает отдавать их на дальнейшую обработку:
Давайте просто поменяем местами сортировку и аудит и запустим пакет ещё раз. Извлечение строк только-только началось, а у нас уже одновременно работают четыре операции, а не три, как раньше:
Первый вариант работает 16 минут, второй — 11.
А сам совет звучит очень просто. Старайтесь ставить неблокирующие операции рядом. По возможности, не разбивайте паралельно работающую цепочку блокирующими операциями.
Кстати, а знаете ли вы, что в службах интеграции имеются ещё и полу-блокирующие операции? Звучит интригующе... Что это за операции и как с ними обращаться, вы узнаете на наших курсах по SQL Server Integration Services!
Ближайшие группы
Заказ добавлен в Корзину.
Для завершения оформления, пожалуйста,
перейдите в Корзину!
От какого лица вы будете оплачивать обучение?