Новость из категории: Информация

SQL Server: сокращаем время загрузки хранилища данных. Часть III

SQL Server: сокращаем время загрузки хранилища данных. Часть III

Асинхронное выполнение команд T-SQL
Я изменил сценарий, чтобы ввести начало или конец диапазона последовательности данных на последовательности с пакетным значением для выполнения периодических пересылок из промежуточной таблицы в таблицу назначения, а затем сохранил изменение как хранимую процедуру. Можно было бы вернуться к пакету SSIS (с несколькими задачами Execute SQL, вызывающими хранимую процедуру), чтобы обеспечить параллельную обработку, но я хотел найти подход T-SQL, вызываемый или выполняемый из сервера базы данных. По умолчанию хранимая процедура или сценарий T-SQL выполняет каждую команду синхронно. Поиск в Интернете с ключевыми словами asynchronous T-SQL дает несколько возможностей, в том числе компонент SQL Service Broker, хранимые процедуры на основе CLR и динамическое создание или выполнение заданий агента SQL Server.

SQL Server: сокращаем время загрузки хранилища данных. Часть III
Вызов задания агента SQL Server из T-SQL для организации асинхронных операций

В конечном итоге я использовал агент SQL Server, назначив четыре задания, три из которых асинхронно вызываются из четвертого. Код T-SQL для четвертого задания показан в листинге выше (обратите внимание, что после выполнения этого сценария вы можете отслеживать ход с использованием типичных средств агента SQL Server, таких как монитор активности заданий). Я обнаружил и заимствовал этот прием из интернет-публикации Антонина Фоллера. Только учтите, что фрагмент кода Антонина формирует задание агента SQL Server «на ходу», выполняет задание, а затем удаляет его. Пока я избрал более жесткий подход.

В последнем решении удается обработать все ряды данных менее чем за 15 минут. Интересно, что мой «сервер» (в действительности виртуальная машина на ноутбуке) располагает значительными ресурсами процессора и памяти, поэтому, вероятно, мне удастся параллельно запускать дополнительные задания, чтобы дополнительно уменьшить время обработки.

Надо сказать, что выполняемая каждую ночь перезагрузка более чем 250 тыс. файлов с разделителями — не самый типичный случай. Но вы сможете использовать один (или больше) из трех описанных мною приемов (BULK INSERT, таблицы, оптимизированные для памяти, и асинхронное исполнение Т-SQL) в своей среде.


Уже который раз начинаете читать эту статью и засыпаете в процессе? Значит, вам необходимо как следует взбодриться! И в этом вам поможет Green Coffee (http://www.pastillasgreencoffee.es/). Да, зеленый кофе обладает отличным тонизирующим эффектом, который в несколько раз сильнее, чем у его более темного собрата. Подробнее на pastillasgreencoffee.es.

Рейтинг статьи

Оценка
0/5
голосов: 0
Ваша оценка статье по пятибальной шкале:
 
 
   

Поделиться

Похожие новости

Комментарии

^ Наверх