|
Как получить план выполнения процедуры?
|
|||
---|---|---|---|
#18+
Добрый день. Есть следубщая проблема: Процдура в 99.99% случаев выполняется за долю секунды. Но в 00.01% она выполняется около минуты. Натравил не неё профайлер + логгирую sysprocesses. Подскажите пожалуйста, как можно получить реальный план выполнения этой процедуры в профайлере? Важно, нужен только ее план, как не пытался включать различные галочки в Перфоманс - логгируется куча других планов ((( Или можно как-то во время выполнения ее план запросом достать? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2021, 11:43 |
|
Как получить план выполнения процедуры?
|
|||
---|---|---|---|
#18+
Я думал сначала что то блоккировка от другого SPID. Но когда отловил во время выполнения, поле blocked было=0 И сейчас вообще не понимаю почему она редко но метко тормозит :-(( ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2021, 11:46 |
|
Как получить план выполнения процедуры?
|
|||
---|---|---|---|
#18+
qqq_2, можно попробовать отловить с помощью sp_HumanEvents , которая выдаст реальный план выполнения Код: sql 1.
указать доп фильтры, такие как хост, пользователь, приложение, объект и т.п. тут видео от автора процы Erik Darling ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2021, 12:29 |
|
Как получить план выполнения процедуры?
|
|||
---|---|---|---|
#18+
Найди на просторах процедуру sp_who3, посмотри, каким запросом она план получает. Джобом раз в полминуты результаты этого запроса клади в таблицу. Изучай плохой план, сохраненный в этой таблице. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2021, 14:24 |
|
Как получить план выполнения процедуры?
|
|||
---|---|---|---|
#18+
komrad qqq_2, можно попробовать отловить с помощью sp_HumanEvents , которая выдаст реальный план выполнения Код: sql 1.
указать доп фильтры, такие как хост, пользователь, приложение, объект и т.п. тут видео от автора процы Erik Darling Нет слов. Я даже до конца пролистать не смог. Занафига? У тредстартера ПРОЦЕДУРА. Тормозит не ПРОЦЕДУРА целиком, а конкретный стейтмент внутри этой процедуры. 1. Установить оный. 2. Поразмыслить на тему "нафига он тормозит". 3. Тупо переписать этот стейтмент. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2021, 20:46 |
|
Как получить план выполнения процедуры?
|
|||
---|---|---|---|
#18+
qqq_2, попробуй посмотреть в sys.dm_exec_query_plan ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2021, 21:56 |
|
Как получить план выполнения процедуры?
|
|||
---|---|---|---|
#18+
а вообще, практически 100%, планы тут ни чего не дадут ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2021, 22:14 |
|
Как получить план выполнения процедуры?
|
|||
---|---|---|---|
#18+
aleks222 Нет слов. Я даже до конца пролистать не смог. Занафига? У тредстартера ПРОЦЕДУРА. Тормозит не ПРОЦЕДУРА целиком, а конкретный стейтмент внутри этой процедуры. 1. Установить оный. 2. Поразмыслить на тему "нафига он тормозит". 3. Тупо переписать этот стейтмент. Поясняю: данная процедура автоматически создаст extended event сессию, обнаружит долгие запросы, соберет статистику по выполнениям и I/O, выделенной и использованной памяти, спиллы в tempdb, возьмет актуальные планы, , закроет сессию и выдаст результат на экран. По-моему, очень удобно и юзер-френдли. Таким образом и обнаружится проблемный "стейтмент" в процедуре. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2021, 11:53 |
|
Как получить план выполнения процедуры?
|
|||
---|---|---|---|
#18+
godsql а вообще, практически 100%, планы тут ни чего не дадут +1 проблема, скорее всего, не в плане при такой статистике. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2021, 13:13 |
|
Как получить план выполнения процедуры?
|
|||
---|---|---|---|
#18+
Любимый вопрос на всех собеседованиях: У нас процедура раньше работала 1 секунду, теперь - несколько минут. Почему? Правильный ответ: В таблицу, с которой работает процедура, вставили новые данные / удалили существующие - статистика таблицы стала некорректной, план запроса к таблице из-за этого строится некорректно, надо обновить статистику. Оч-чень похоже на случай ТС. Данные в табличку влили, статистику не обновили, потом запустили процедуру, которая из-за работы с некорректной статистикой получила неверный план выполнения, и только сильно позже обновили статистику. Вариант 2: В процедуре не используется WITH RECOMPILE, как в первый раз построили план выполнения под какое-то часто используемое значение параметра процедуры, так этот план и гоняют со всеми значениями параметра. Включая и такие редко используемые значения параметра, для которых нужен абсолютно другой план выполнения. Вариант три: админ сервера когда-то услышал, что надо чистить кэш планов выполнения, теперь раз в сутки / 6 часов / иной промежуток времени чистит кэш, а процедура тяжёлая - пока сервер план выполнения построит с нуля, времени пройдёт ого-го. Та же минута, ага. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2021, 12:32 |
|
Как получить план выполнения процедуры?
|
|||
---|---|---|---|
#18+
С вероятностью 99,9% тормоза происходят при определённой комбинации параметров из-за того, что план для этой комбинации неэффективен. Я такие проблемы решаю ведением логов работы процедуры в таблицу и потом анализом этого лога. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2021, 04:07 |
|
|
start [/forum/topic.php?fid=46&gotonew=1&tid=1684702]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
137ms |
get topic data: |
10ms |
get first new msg: |
6ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
others: | 310ms |
total: | 543ms |
0 / 0 |