Sql server: скорочуємо час завантаження сховища даних. Частина iii

Відео: M10777 Реалізація сховищ даних в Microsoft SQL Server 2012 Day4

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 (https://pastillasgreencoffee.es/). Так, зелена кава володіє відмінним тонізуючим ефектом, який в кілька разів сильніше, ніж у його більш темного побратима. Детальніше на pastillasgreencoffee.es.

ІНШЕ

» » Sql server: скорочуємо час завантаження сховища даних. Частина iii