Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Проблема с выполнением хранимых процедур  [new]
DZeus
Member

Откуда: SPb
Сообщений: 65
Здравствуйте коллеги.

Хочу задать может быть пространный вопрос. Есть ряд процедур, которые последовательно запускаются в приложении. Каждая процедура содержит SELECT из нескольких таблиц, логику и INSERT результатов в таблицу. Внезапно приложение начинает вылетать по таймауту. Вылетает на одной и той же процедуре.
Копирую код процедуры в отдельный Query в SSMS - выполняется за милисекунды.
Пишу EXEC имя_процедуры параметр - выполняется несколько минут.

Однако через какой-то промежуток времени таймауты исчезают.

Подскажите в чём может быть проблема, в каком направлении смотреть, что читать.
4 дек 09, 16:44    [8021454]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с выполнением хранимых процедур  [new]
--__Александр__--
Member

Откуда:
Сообщений: 2631
Сравните планы "EXEC имя_процедуры параметр" и просто
"код процедуры в отдельный Query в SSMS ".
4 дек 09, 17:26    [8021789]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с выполнением хранимых процедур  [new]
DZeus
Member

Откуда: SPb
Сообщений: 65
--__Александр__--,

Сравнил (Estimated Execution Plan) , различаются но оценить эти различия не могу, опыта маловато.

Картина не ясна ещё потому, что спустя некоторое время оба варианта выполняются одинаково - за доли секунды.
7 дек 09, 15:47    [8029896]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с выполнением хранимых процедур  [new]
Crimean
Member

Откуда:
Сообщений: 13148
рекомпиляции помониторить можно, если планы стабильные
7 дек 09, 18:50    [8031408]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с выполнением хранимых процедур  [new]
DZeus
Member

Откуда: SPb
Сообщений: 65
Crimean,

Каким образом мониторить рекомпиляцию? =)

Заметил различие в планах, если "EXEC proc" то insert делается в clusterd index, если просто код выполнять то Insert делается в Non-clustered Index. Но по затратам вроде 2ой вариант даже дороже.
8 дек 09, 09:28    [8032423]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с выполнением хранимых процедур  [new]
--__Александр__--
Member

Откуда:
Сообщений: 2631
SQl Server Profiler Events - SP:Recompile

Планы лучше привидите запроса который тормозит, и план, когда он не тоормозит.
В гадалки не очень интересно играть.
8 дек 09, 09:42    [8032462]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с выполнением хранимых процедур  [new]
Павел-П
Guest
--__Александр__--,

Добрый день. Прочитайте статью по ссылке ниже. Там описано такое явление как SQL Parameter Sniffing и как его избегать. Возможно это ваш случай и статья вам поможет. Сам неоднократно сталкивался с подобным явлением. Данная техника помогала его хорошо лечить.

http://www.sqlpointers.com/2006/11/parameter-sniffing-stored-procedures.html
8 дек 09, 10:50    [8032984]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с выполнением хранимых процедур  [new]
DZeus
Member

Откуда: SPb
Сообщений: 65
Павел-П,

Спасибо, очень хорошая статья.
8 дек 09, 15:19    [8035642]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить