У нас есть хранимая процедура, которая выполняется ночью, которая, в свою очередь, запускает ряд других процедур. Некоторые из этих процедур могут логически выполняться параллельно с некоторыми другими.Начать хранимые процедуры последовательно или параллельно
- Как я могу указать SQL Server, должна ли процедура выполняться параллельно или серийный — т.е. стартовало из асинхронно или блокировки?
- Каковы были бы последствия их параллелизма, учитывая, что я уже определил, что процессы не будут конкурировать за доступ к таблицам или блокировки - просто общий объем диска и память. По большей части они даже не используют одни и те же таблицы.
- Имеет значение, если некоторые из этих процедур являются той же самой процедурой, только с различными параметрами?
- Если я запускаю пару или процедуры асинхронно, есть ли хорошая система в SQL Server, чтобы дождаться, когда они закончатся, или мне нужно, чтобы каждый из них установил флаг где-нибудь, и периодически проверяйте и опросите флаг используя
WAITFOR DELAY
?
На данный момент мы все еще на SQL Server 2000.
Как примечание стороны, это важно, потому что главная процедура стартовала в ответ на завершение дампа данных на сервер из мейнфреймов. Сброс мейнфреймов занимает около 2 часов каждую ночь, и мы не контролируем его. В результате мы постоянно пытаемся найти способы сократить время обработки.
Похоже, это может сработать, но создание рабочих мест не является чем-то, что здесь поощряется. Даже основная процедура, о которой я говорю здесь, - это не работа - она запускается через отдельную программу из запланированной задачи Windows. – 2008-12-08 16:26:36
Идея .exe немного привлекательнее, хотя мне все же хотелось бы знать, возможно ли это сделать в самом SQL-сервере разумным способом. Это должно быть, если это не так. – 2008-12-08 16:52:15