SQL Server ベースの環境で実行プランのファイル (.sqlplan) の解析を行う際に SolarWinds Plan Explorer を使用することがあります。
SSMS でも実行プランの解析はできますが、複雑な実行プランになった場合は Plan Explorer を使用したほうが効率的に実行プランの解析を行うことができます。
Plan Explorer は実行プランのファイルだけでなく、デッドロックレポート (.xdl) についても解析を行うことができます。
Plan Explorer を使用した xml_deadlock_report の解析
拡張イベントで「xml_deadlock_report」を取得することでデッドロックが発生した際の情報を取得することができ、取得方法等については次のドキュメントで解説されています。
取得されたデッドロックは、「xml_report」というフィールドとして情報が取得されますが、「デッドロック」タブを開くことで、デッドロックの情報を可視化して表示することができます。
シンプルなデッドロックであればこの情報だけでも問題はないのですが、複雑なデッドロックになってくると、SSMS の標準で提供されている可視化だけでは解析が難しいケースがあります。
そのような場合は、冒頭で紹介した Plan Explorer を活用します。
拡張イベントの「xml_report」のフィールドをダブルクリックすることでデッドロックレポートを表示することができます。
取得した XML 全体を「<deadlock-list> </deadlock-list>」で括って、拡張子を xdl として保存することでデッドロックレポートを保存することができます。
保存した XDL ファイルを Plan Explorer で開くことで、Plan Explorer を使用してデッドロックの解析を行うことができます。
SSMS でデッドロックを解析した場合、デッドロックのグラフの情報が重なってしまうい、情報が確認しづらいことがあるのですが、Plan Explorer ではアイコンが重ならないようにして可視化が行われます。
また、デッドロック情報がグリッドとして整理されて表示がされますので、デッドロックの要因となったロックの情報も確認しやすい形で表示が行われます。
Plan Explorer を使用したほうが、SSMS でデッドロックを表示するより解析が捗るケースがありますので、このような方法があるということも覚えておくとよいのではないでしょうか。