Server Management Studioでのクエリプランの表示


9

SQLサーバーに関する別の質問:カウンターがリセットされて以来、最もCPUを集中的に使用する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:plan_handleを取得したら、実際の計画に興味があります。だから私は、例えば:

select * from sys.dm_exec_query_plan (0x060006001F176406B8413043000000000000000000000000)

query_plan列には、クリックするとXMLドキュメントを表示するリンクが表示されます。それをwhatever.sqlplanとしてディスクに保存すると、Windowsでそれをダブルクリックでき、Management Studioで正しく表示されます。きっとこのステップを回避する方法があるに違いない!?

質問3:SET SHOWPLAN_TEXTの昔のように、XMLをテキスト形式に戻す方法はありますか?グラフィカルに表示できるようにしたいが、意味のある方法で差分を自動化したい。

ありがとう!

回答:


7

Wrox PressによるSQL Server 2008 Internals and Troubleshooting本で次のヒントを見つけました。

SQL 2005サーバーに接続されたSQL 2008 SSMSを使用している場合、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)

また、まだ見ていない場合は、SQL Sentryの無料のPlan Explorerをチェックしてください。最初にXMLを.sqlplanとしてディスクに保存する必要がありますが、SQL実行プランのビューがはるかに使いやすくなっています。誰かがいつかビジュアル実行プラン差分ツールを思い付くといいのですが。:D


9

A1:plan_handleは、ステートメントのグループまたはバッチのハッシュです。

A2:いいえ、dm_exec_query_planはクエリプランをXML形式で返すため、グラフを表示するには、プランをクリックする必要があります。

A3。これを試して:

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

1
戻ってきまし<ShowPlanXML xmlns="http://schemas.microsoft.com...たが、直接表示する方法はまだありません.sqlplan。最初にファイルとしてディスクに保存する必要があります。変だ。ありがとうtho ':)
Gaius
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.