Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 План выполнения запроса  [new]
Моржовый
Guest
Как посмотреть (реальный, а не предполагаемый) план выполнения запроса, который выполняется в текущий момент? Известен текст запроса и идентификатор сессии.
22 дек 11, 18:57    [11811532]     Ответить | Цитировать Сообщить модератору
 Re: План выполнения запроса  [new]
Glory
Member

Откуда:
Сообщений: 104751
А версия сервера как всегда неизвестна
22 дек 11, 19:02    [11811555]     Ответить | Цитировать Сообщить модератору
 Re: План выполнения запроса  [new]
Моржовый
Guest
Glory,

2008 R2
22 дек 11, 19:18    [11811594]     Ответить | Цитировать Сообщить модератору
 Re: План выполнения запроса  [new]
Jovanny
Member

Откуда:
Сообщений: 1196
SELECT     session_id, (select text from sys.dm_exec_sql_text(sql_handle)) AS query,
					  (select p.query_plan from sys.dm_exec_query_plan(plan_handle) as p) AS exec_plan
FROM         sys.dm_exec_requests
22 дек 11, 19:27    [11811608]     Ответить | Цитировать Сообщить модератору
 Re: План выполнения запроса  [new]
Моржовый
Guest
Jovanny,

Что может означать следующее:
- в поле query вижу скрипт создания процедуры (CREATE PROCEDURE ...)
- exec_plan = NULL (пустой)?

Процедура висит на этом запросе (информация по логам).
23 дек 11, 11:56    [11813782]     Ответить | Цитировать Сообщить модератору
 Re: План выполнения запроса  [new]
Jovanny
Member

Откуда:
Сообщений: 1196
Моржовый,

Возможно, в процедуре не только запросы выполняются, но и какие-нибудь скалярные вычисления? Или вызовы CLR фукций и процедур?
23 дек 11, 13:01    [11814423]     Ответить | Цитировать Сообщить модератору
 Re: План выполнения запроса  [new]
Моржовый
Guest
Jovanny,

Почему-то status=suspended в sys.dm_exec_requests по данной сессии. В чем может быть дело?
Запрос - вставка в темповую таблицу.
23 дек 11, 18:26    [11817518]     Ответить | Цитировать Сообщить модератору
 Re: План выполнения запроса  [new]
Моржовый
Guest
Точнее статус меняется c suspended на running и обратно. При этом когда status=suspended, wait_type меняется с CXPACKET на IO_COMPLETION и обратно.
23 дек 11, 18:36    [11817561]     Ответить | Цитировать Сообщить модератору
 Re: План выполнения запроса  [new]
Jovanny
Member

Откуда:
Сообщений: 1196
Естественно, что Ваш запрос конкурирует с другими запросами, и ему приходится ждать освобождения необходимых ресурсов, при этом статус изменяется.
Большое количество ожиданий CXPACKET указывает на проблемы с параллелизмом и иногда лечится опцией MAXDOP.
IO_COMPLETION указывает на проблемы ввода-вывода, возможно, диски не очень быстрые.
26 дек 11, 11:04    [11824771]     Ответить | Цитировать Сообщить модератору
 Re: План выполнения запроса  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
Jovanny
Большое количество ожиданий CXPACKET указывает на проблемы с параллелизмом и иногда лечится опцией MAXDOP.

Большое количество ожиданий CXPACKET указывает на то что ИСПОЛЬЗУЕТСЯ параллелизм, не более того. Даже если условия для параллельного выполнения идеальны в ожиданиях все равно будет присутствовать CXPACKET.
28 дек 11, 01:04    [11836338]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить