У нас есть хранимая процедура, которая выполняется ночью, что, в свою очередь, запускает ряд других процедур. Некоторые из этих процедур могут логически выполняться параллельно с некоторыми другими.
- Как я могу указать SQL Server, следует ли запускать процедуру параллельно или по серийному номеру; т.е.: начался асинхронный или блокирующий?
- Каковы были бы последствия для их параллелизма, имея в виду, что я уже определил, что процессы не будут конкурировать за доступ к таблицам или блокировки - просто общий объем диска и память. По большей части они даже не используют одни и те же таблицы.
- Имеет ли значение, если некоторые из этих процедур являются одной и той же процедурой, только с разными параметрами?
- Если я запускаю пару или процедуры асинхронно, есть ли хорошая система в SQL Server, чтобы дождаться, когда они закончатся, или мне нужно, чтобы каждый из них установил флаг где-нибудь, и периодически проверяйте и опросите флаг используя
WAITFOR DELAY
?
В настоящий момент мы все еще находимся на SQL Server 2000.
В качестве побочного примечания это важно, потому что основная процедура запускается в ответ на завершение дампа данных на сервере из системы мейнфреймов. Сброс мейнфреймов занимает около 2 часов каждую ночь, и мы не контролируем его. В результате мы постоянно пытаемся найти способы сократить время обработки.