Відображення планів запитів у студії управління сервером


9

Ще одне запитання сервера SQL: у мене простий запит, який дає мені найбільш інтенсивний процесор SQL з моменту скидання лічильників:

select top 10  
    sum(qs.total_worker_time) as total_cpu_time,  
    sum(qs.execution_count) as total_execution_count, 

    qs.plan_handle, st.text  
from  
    sys.dm_exec_query_stats qs 
cross apply sys.dm_exec_sql_text(qs.plan_handle) as st
group by qs.plan_handle, st.text 
order by sum(qs.total_worker_time) desc

Питання 1: Що саме таке plan_handle? Схоже, це не хеш плану, як це є в Oracle. Я прошу, бо хочу вміти виявити ситуацію, в якій план заяви змінюється.

Запитання 2: Після того, як у мене є план_ручка, мене цікавить фактичний план. Так я роблю, наприклад:

select * from sys.dm_exec_query_plan (0x060006001F176406B8413043000000000000000000000000)

У стовпці query_plan я отримую посилання, яке при натисканні відображає XML-документ. Якщо я збережу його на диску як будь-який файл.sqlplan, я можу двічі клацнути його в Windows, і він відображається правильно у програмі Management Studio. Звичайно, повинен бути спосіб уникнути цього кроку ?!

Питання 3: Чи є спосіб перетворити XML назад у текстовий формат, як за старих часів SET SHOWPLAN_TEXT? Я хочу мати можливість переглядати їх графічно, але й автоматизувати їх різним змістом.

Дякую!

Відповіді:


7

Я знайшов таку пораду в книзі "Внутрішні та усунення несправностей" SQL Server 2008 від Wrox Press:

Якщо ви використовуєте SQL 2008 SSMS, підключений до сервера SQL 2005, при натисканні на план запитів XML він автоматично завантажить план графічних запитів.

Я перевірив, що він працює, використовуючи наступний запит із тієї ж книги:

select session_id, text, query_plan
from sys.dm_exec_requests
cross apply sys.dm_exec_sql_text(sql_handle)
cross apply sys.dm_exec_query_plan(plan_handle)

Крім того, якщо ви ще цього не подивилися, ознайомтеся з безкоштовним програмою Explorer Explorer SQL Sentry. Вам потрібно спочатку зберегти XML на диску як .sqlplan, але він пропонує набагато простіше у використанні перегляд плану виконання SQL. Будемо сподіватися, що колись хтось придумає інструмент "Відтворення плану візуального виконання". : D


9

А1: plan_handle - хеш для групи операторів або групи.

A2: Ні, dm_exec_query_plan повертає план запитів у форматі XML, тому вам потрібно натиснути на нього, щоб побачити графік.

А3. Спробуйте це:

SELECT query_plan 
FROM sys.dm_exec_text_query_plan (0x06000100A27E7C1FA821B10600,0,-1);

1
Я повертаюся назад, <ShowPlanXML xmlns="http://schemas.microsoft.com...але досі немає способу його відображення безпосередньо - мені потрібно спочатку зберегти його на диску як .sqlplanфайл. Дивно. Дякую Тхо ':)
Гай
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.