Хит производительности с WAITFOR? - PullRequest
0 голосов
/ 04 ноября 2011

Я использую этот код для репликации управляемых данными подписок в MSSQL 2008.

http://sqlblog.com/blogs/greg_low/archive/2008/08/13/data-driven-subscriptions-in-sql-server-2005-standard-edition.aspx

В качестве части системы очередей используется

WAITFOR DELAY '00:00:30';

Я планирую использовать это для более чем 200+ отчетов.

Придется ли мне планировать их запуск в разное время, или все это будет успешно выполняться, ставя в очередь отчеты и как снижается производительность?

Спасибо

1 Ответ

1 голос
/ 04 ноября 2011

Во-первых, по сути, отсутствует перфорация (для других запросов, использующих) waitfor - это то, для чего он предназначен, в том числе - освобождение процессора для других целей. Вопрос в том, что еще запланировано на потом - резервное копирование и т. Д.? Я был бы склонен проверить время, затраченное на каждый отчет, и записать в таблицу (для вашего 201+-го отчета). Это действительно зависит от того, насколько интенсивны ваши отчеты - и тот факт, что вы планируете их на спокойное время, предполагает, что ваши ресурсы не безграничны. Я был бы склонен планировать отчеты на разное время - даже если с интервалом всего 5 секунд - особенно если предварительный отчет занимает от 1 до 4 секунд. Пакет sql будет немного сложнее, но будет работать более плавно. Кроме того, запрос, который сообщает вам, когда отчеты перекрываются, может помочь в планировании. Если у вас отключен параллелизм и имеется 4 процессора, вы можете запускать 4 отчета за раз, но также проверяйте свою очередь на диске.

...