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

Откуда:
Сообщений: 36
Вечер добрый. Извините если вопрос примитивный, но ответ нужно найти. Цель:
Поиск запросов с большим duration и план выполнения запроса к нему.

Мониторю базу и ищу длительные запросы с фильтром по Duration. Найти не проблема, проблема в том что к запросу нужен и план выполнения запроса, чтобы оценить и на что уходят ресурсы и обьем данных, а вот с этим проблема.
С заполненным duration не сыплются планы выполнения, а с отбором по пустому duration сыплются все планы выполнения запросов и куча мусора, при большой трассе проблемно разобрать, а мне нужно чтобы были запросы с большим duration и план выполнения запроса к нему.

Может кто подсказать либо как настроить фильтр либо как отфильтровать трассу.
5 авг 12, 22:47    [12965487]     Ответить | Цитировать Сообщить модератору
 Re: ShowPlan & Duration  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31912
munster
при большой трассе проблемно разобрать,
Если не проблема снять большую трассу, то можно сохранять её в таблицу, а потом разбирать запросами.

Если большую трассу сохранять нельзя, то единственный вариант - выполнять эти запросы самому, настроив профайлер на SPID, и уже оттуда брать план. Хотя это конечно может быть немного неточно и не это всегда просто сделать.
5 авг 12, 22:51    [12965497]     Ответить | Цитировать Сообщить модератору
 Re: ShowPlan & Duration  [new]
rector
Member

Откуда: Киев
Сообщений: 57
munster,

А как вы делаете поиск ?

Можно использовать такой вариант:

SELECT TOP 20 SUBSTRING(qt.text, (qs.statement_start_offset/2)+1, 
        ((CASE qs.statement_end_offset
          WHEN -1 THEN DATALENGTH(qt.text)
         ELSE qs.statement_end_offset
         END - qs.statement_start_offset)/2)+1), 
qs.total_logical_reads/qs.execution_count AS AVG_LogicalReads,        
qs.execution_count, 
qs.total_logical_reads, qs.last_logical_reads,
qs.min_logical_reads, qs.max_logical_reads,
qs.total_elapsed_time, qs.last_elapsed_time,
qs.min_elapsed_time, qs.max_elapsed_time,
qs.last_execution_time,
qp.query_plan
FROM sys.dm_exec_query_stats qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) qt
CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle) qp
WHERE qt.encrypted=0
ORDER BY total_elapsed_time desc
5 авг 12, 22:57    [12965512]     Ответить | Цитировать Сообщить модератору
 Re: ShowPlan & Duration  [new]
munster
Member

Откуда:
Сообщений: 36
alexeyvg,

спасибо за совет, про таблицу я забыл. обычно всегда рекоммендуют писать в файл.

rector,

большое вам спасибо за запрос, его еще стоит разобрать, но сразу вопрос как просмотреть план запроса в виде схемы?
в колонке "query_plan" XML текст, можно ли его вывести в виде схемы?
5 авг 12, 23:55    [12965648]     Ответить | Цитировать Сообщить модератору
 Re: ShowPlan & Duration  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31912
munster
в колонке "query_plan" XML текст, можно ли его вывести в виде схемы?
Сохраните этот текст в файл с расширением sqlplan, должно открыться в студии
6 авг 12, 00:20    [12965696]     Ответить | Цитировать Сообщить модератору
 Re: ShowPlan & Duration  [new]
nezhadnye_my
Guest
Problem: Clicking on the XML link containing a query plan doesn’t display the graphical plan but opens the XML editor instead

Solution: SQL Server 2008 R2 Service Pack 1 Cumulative Update 4 (10.50.2796.0) is the first build servicing showplanxml.xsd with the updated version. So, install that CU to get rid of this problem.

проапдейтенная студия по клику открывает XML-план графически
6 авг 12, 00:59    [12965759]     Ответить | Цитировать Сообщить модератору
 Re: ShowPlan & Duration  [new]
kain111
Member

Откуда:
Сообщений: 227
http://msdn.microsoft.com/ru-ru/library/ms189741.aspx
почитайте
например можно так использовать
SELECT TOP 1000  creation_time,last_execution_time,execution_count,total_worker_time,total_worker_time/execution_count AS mid_proc,total_elapsed_time,total_elapsed_time/execution_count AS mid_time,total_logical_reads,total_logical_writes
 ,st.text
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS st
ORDER BY mid_proc desc

вот вам запрос на самые тяжелые запросы приходящие к серверу и хранимые в кэше.
6 авг 12, 14:01    [12968007]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить