web-dev-qa-db-ja.com

sys.dm_exec_query_stats execution_countとcreation_timeについて

SQL Server 2012 'Performance Dashboard Reports' をダウンロードしましたが、結果の1つが示すデータを解釈し、DMV sys.dm_exec_query_statsにリンクし直す際に問題が発生しています。

CPUレポートによると、私の最悪のクエリは、約27K回実行された挿入ステートメントです。

クエリのquery_hashを取得して以下のクエリに入れると、query_hashquery_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ごとに一意ですか?

5
Mark Sinkinson

sys.dm_exec_query_statsは、プランの集計された統計を返しますが、クエリごとに1行を返します。

したがって、プロシージャに2つのクエリがある場合、sys.dm_exec_query_statsは2行を返しますが、プラン関連の列(コンパイル時間、実行カウントなど)はプランレベルの統計であり、これ以上集計することはできません。

5
Kev Riley