SQL Server 2012 'Performance Dashboard Reports' をダウンロードしましたが、結果の1つが示すデータを解釈し、DMV sys.dm_exec_query_stats
にリンクし直す際に問題が発生しています。
CPUレポートによると、私の最悪のクエリは、約27K回実行された挿入ステートメントです。
クエリのquery_hash
を取得して以下のクエリに入れると、query_hash
とquery_plan_hash
は同じですが、plan_handle
の値が異なる62個の結果が得られます。
SELECT * FROM sys.dm_exec_query_stats AS deqs
CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS dest
WHERE query_hash = 0x1561B563078359C1
[〜#〜] bol [〜#〜] によると、execution_count
は以下を示します:
最後にコンパイルされてからプランが実行された回数。
およびcreation_time
番組
計画が作成された時刻。
99.9%でクエリが5分ごとに実行されると確信していますが、結果セットの各クエリには今朝のcreation_time
の計画がありますが、execution_count
はそれぞれのクエリに対して〜400を示しています。
SQL Serverはこの数値をどのように決定しますか?数字はplan_hash
によって何らかの形でリンクされていますか、それともplan_handle
ごとに一意ですか?
sys.dm_exec_query_stats
は、プランの集計された統計を返しますが、クエリごとに1行を返します。
したがって、プロシージャに2つのクエリがある場合、sys.dm_exec_query_stats
は2行を返しますが、プラン関連の列(コンパイル時間、実行カウントなど)はプランレベルの統計であり、これ以上集計することはできません。