Хранимая процедура выполняется> 30 секунд при вызове с веб-сайта, но <1 секунда при вызове с ssms - PullRequest
1 голос
/ 11 мая 2010

У меня есть хранимая процедура, которая вызывается веб-сайтом для отображения данных. Сегодня веб-страница начала отсчет времени, поэтому я запустил профилировщик и увидел запрос, который занимал слишком много времени. Затем я выполнил тот же запрос в Management Studio под тем же именем пользователя, и для его возврата требуется менее секунды.

Есть ли что-нибудь очевидное, что может быть причиной этого? Я не могу придумать причину, почему когда ASP вызывает хранимый процесс, это занимает 30 секунд, но когда я его вызываю, все нормально.

Спасибо

Ответы [ 5 ]

1 голос
/ 11 мая 2010

Обычно это происходит из-за того, что некоторые из SET-tings отличаются между соединением Management Studio и соединением ASP, таким как SET ARITHABORT. Это не объясняет, почему это только стало проблематичным сегодня с веб-сайта, но есть большая вероятность, что это связано.

1 голос
/ 11 мая 2010

Я думаю, может быть две причины:

  1. Проблема с сетью
  2. Параметр сниффинг
0 голосов
/ 11 мая 2010

У нас была похожая проблема с нашим IVR - когда я запускал запрос через SSMS, он возвращался мгновенно, но когда он запускался через веб-сервис, к которому обращался наш IVR, он зависал примерно в 20% случаев - действительно странно .

В итоге я запустил SQL Profiler для просмотра отправляемых запросов, а затем добавил несколько дополнительных индексов в соответствии с рекомендациями мастера настройки индекса, который каждый раз ускорял запрос IVR до секунды. Я подозреваю, что проблема также была связана с параметрами, и хотя я не сравнивал план выполнения между двумя различными местами, я подозреваю, что они были совершенно разными. SQL Profiler поможет вам разобраться в этом, поскольку вы можете видеть запрос, фактически переданный движку, а также план выполнения, который он использует для извлечения данных.

0 голосов
/ 11 мая 2010

Казалось, что сниффинг параметров ... Я остановил сниффинг, присвоив переданные параметры локальным переменным, и в данный момент все в порядке (т. Е. Снова запускается через секунду с сайта). Будет интересно посмотреть, останется ли он таким же или снова ухудшится.

Я предполагал, что запуск с параметром RECOMPILE временно "исправит" проблему с анализом параметров для рассматриваемого запроса, но это не так.

Ах, хорошо. Спасибо всем за ответы. Я посмотрю, что произойдет

0 голосов
/ 11 мая 2010

Звучит как мертвый замок.

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