Медленная хранимая процедура при активации из Service Broker - PullRequest
0 голосов
/ 11 ноября 2010

Я написал хранимую процедуру, которая занимает 15 мин при выполнении из Management Studio.Однако, когда он активирован из Service Broker, через 4 часа он не выполнил даже половины своей работы.

Известны ли проблемы с производительностью при запуске SP из Service Broker?(Возможно, Service Broker запускает SP внутри транзакции, а Management Studio - нет?)

Я использую SQL Server 2005.

Обновление:

Похоже, проблема заключалась в выполнении хранимой процедуры из другой хранимой процедуры.Более конкретно, у меня есть хранимая процедура, которая получает операцию (экспорт или удаление).Этот SP затем вызывает соответствующий SP на основе операции (один имеет процесс ETL, другой удаляет данные).Принудительная перекомпиляция этих SP, похоже, устранила проблему.Интересно, должен ли SQL Server составить план действий для каждого подчиненного SP, независимо от вызывающего их SP.В этом случае перекомпиляция не потребуется.

1 Ответ

1 голос
/ 12 ноября 2010

Я не знаю о компоненте Service Broker, но для устранения неполадок общих хранимых процедур ознакомьтесь с предложениями, приведенными на этот вопрос . Они очень помогли мне выяснить некоторые проблемы с моими хранимыми процедурами.

Вы можете взглянуть на то, что делает хранимая процедура с подпрограммой WhoIsActive, вы можете получить план запроса и изучить, есть ли разница с планом запроса при выполнении в Management Studio, вы можете поэкспериментировать с * 1005. * подсказка по искоренению сниффинга параметров ...

(Обнаружение параметров заключается в том, что план запроса генерируется по-разному при предоставлении других параметров. Передает ли компонент Service Broker те же параметры в ваш SP, что и параметры, передаваемые в Management Studio?)

Удачи и, пожалуйста, опубликуйте свои выводы здесь, если у вас ничего не получится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...