Система Orphus
Версия для печати

Опыт практического применения t-sql в системах распределенных баз данных

Авторы: Смирнов Андрей
MMTR
Смирнов Михаил

Источник: RSDN Magazine #2-2007
Опубликовано: 30.07.2007
Исправлено: 15.04.2009
Версия текста: 1.0
Реализация параллельного выполнения запросов на T-SQL
Предварительная настройка
Описание реализации
Комментарии к коду примера
Описание проблем при настройке DTC и возможные их решения
Master.dbo.sysProcesses как альтернатива Activity monitor, недокументированные возможности
Динамические скрипты, вызов на linked_server
Проверка linked_server на loopback
Описание реализации
Как вернуть данные из temporary table чужой сессии (только mssql2000)
Возврат курсора из динамического скрипта
Заключение.

Реализация параллельного выполнения запросов на T-SQL

ПРИМЕЧАНИЕ

Стоит сразу оговориться, речь не пойдет о реализации многопоточности в ее классическом понимании, т.е. о создании потоков, объектов синхронизации и прочих сопутствующих сущностей. Речь пойдет об имитации многопоточного выполнения t-sql кода в распределенной системе (на нескольких linked серверах) и синхронизации этого кода средствами, предоставляемого sql server job agent.

Всем известно, что в MS SQL Server отсутствует встроенный механизм асинхронного выполнения запросов – вы не можете из одного запроса или хранимой процедуры запустить другой запрос так, чтобы ваш запрос продолжил свою работу, не дожидаясь его окончания. Однако в некоторых случаях такая возможность может оказаться весьма полезной. Например, если ваш запрос или процедура проводит подготовку каких-либо данных, затем запускает несколько различных, независимых друг от друга процедур, а затем выполняет некоторые завершающие дествия. В обычном случае вы вынуждены запускать эти процедуры последовательно, одну за другой. Однако, было бы намного удобнее, если бы у вас была возможность запустить их параллельно. Это позволило бы существенно сэкономить время и не повлияло бы на работу этих процедур, так как они не зависят друг от друга.

Предварительная настройка

Описание реализации

Комментарии к коду примера

Описание проблем при настройке DTC и возможные их решения

Master.dbo.sysProcesses как альтернатива Activity monitor, недокументированные возможности

Динамические скрипты, вызов на linked_server

Проверка linked_server на loopback

Описание реализации

Как вернуть данные из temporary table чужой сессии (только mssql2000)

Возврат курсора из динамического скрипта

Заключение.


Полная версия этой статьи опубликована в журнале RSDN Magazine #2-2007. Информацию о журнале можно найти здесь