MS_SQLExecutionPlan - NetDevInfraWGinOSSConsortium/NetDevInfraWiki GitHub Wiki
- 戻る(SQL Server 問題の分析方法、SQL Server アドホック クエリ問題の監視)
- 実行プランのグラフィカル表示
SQL Server Management Studioを使用して、
- クエリの実行とデバッグが可能
- また、クエリプラン(実行プラン)のグラフィカル表示も可能。
補足(3種類の実行プラン): 「実行プラン」と呼ばれるものには
性質の異なる 3 つがあり、見分けないと解析を誤る。
種類 取得方法 内容 推定実行プラン Ctrl+L / SET SHOWPLAN_XML ON実行せずにオプティマイザの見積りだけを表示 実際の実行プラン Ctrl+M / SET STATISTICS XML ON実行した上で実際の行数も表示 ライブ クエリ統計 SSMS の「ライブ クエリ統計を含める」 実行中の進捗をリアルタイム表示。長時間クエリの解析に有用 チューニングの起点は、実際の実行プランで
「推定行数」と「実際の行数」の乖離を探すこと。
大きくずれている演算子の直前が、統計情報の陳腐化や
SARGable でない述語(列に関数を適用しているなど)を疑う場所になる。
補足(読み方の勘所): グラフィカル表示は右から左に流れる。
太い矢印ほど行数が多い。
よく問題になるのは以下。
見えるもの 疑うこと Key Lookup / RID Lookup 非クラスタ化インデックスに列が足りない(インデックスの INCLUDEを検討)Table Scan / Clustered Index Scan インデックスが無い、または使えていない Sort が高コスト ORDER BYに合ったインデックスが無い。tempdb へのスピルも確認Hash Match 結合キーのインデックス不足。ただし大量データでは正常 演算子の警告アイコン メモリ グラントの不足(スピル)、暗黙の型変換、統計情報の欠落 「コスト %」は見積り値であり、実測ではない点に注意。
推定が外れているクエリでは、コスト % 自体が当てにならない。
- 【SQL Server】実行計画を見てみよう | w2ソリューション株式会社 TECH Media
https://www.w2solution.co.jp/tech/2020/10/26/%E3%80%90sql-server%E3%80%91%E5%AE%9F%E8%A1%8C%E8%A8%88%E7%94%BB%E3%82%92%E8%A6%8B%E3%81%A6%E3%81%BF%E3%82%88%E3%81%86/
- 実行プランの表示 (SQL Server Management Studio)
https://learn.microsoft.com/ja-jp/sql/relational-databases/performance/display-an-actual-execution-plan - 実行プランの論理操作および物理操作のリファレンス
https://learn.microsoft.com/ja-jp/sql/relational-databases/showplan-logical-and-physical-operators-reference
実行プランのログを取得できる。
補足(最新化:クエリ ストア): SQL Server 2016 以降は、
クエリ ストアが実行プランと実行統計を DB 内に自動で蓄積する。
トレースを仕掛けなくても、
- 「あるクエリの実行プランがいつ変わったか」
- 「変わった前後で実行時間がどう変化したか」
を後追いで比較でき、良かったプランを
**強制(Force Plan)**することもできる。
実行プランの回帰(plan regression)を扱うなら、
現在はまずクエリ ストアを見るのが定石
(SQL Server のログ参照)。
オプティマイザが実行プランを決定する。
Tags: 移行, データアクセス, SQL Server, 障害対応, 性能, デバッグ, ツール類