SQL Server CPU使用率の高いクエリを確認する
- 作成日 2021.05.10
- Sql Server SQL Server Management Studio
- SQL Server

SQL ServerでCPU使用率の高いクエリを確認する手順を記述してます。
環境
- OS windows10 pro
- SQL Server2019 Express
- SSMS 18.7.1
クエリを確認
SSMSを使用して、対象のオブジェクト名を右クリックします。
「レポート(P)」>「標準レポート」から「CPUの平均時間ごとの上位のクエリ」を選択します。

キャッシュに残っているクエリの中から、上位の10位までのクエリが表示されます。

PDFにエクスポートすることも可能です。

クエリを使用すると、上位10位以外も取得することが可能です。
SELECT TOP 100
rank() over(order by total_worker_time desc,sql_handle,statement_start_offset) AS [row_no]
, db_name(st.dbid) AS [database_name]
, creation_time
, last_execution_time
, (total_worker_time+0.0)/1000 AS [total_worker_time(ms)]
, (total_worker_time+0.0)/(execution_count*1000) AS [AvgCPUTime(ms)]
, (total_elapsed_time+0.0)/1000 AS [total_elapsed_time(ms)]
, (total_elapsed_time+0.0)/(execution_count*1000) AS [AvgElapsedTime(ms)]
, total_logical_reads AS [LogicalReads(page)]
, total_logical_writes AS [logicalWrites(page)]
, total_logical_reads+total_logical_writes AS [AggIO(page)]
, (total_logical_reads+total_logical_writes)/(execution_count + 0.0) AS [AvgIO(page)]
, execution_count
, total_rows
, st.text AS [batch_query_text]
, CASE
WHEN sql_handle IS NULL
THEN ' '
ELSE ( SUBSTRING(st.text,(qs.statement_start_offset+2)/2,
(CASE
WHEN qs.statement_end_offset = -1
THEN LEN(CONVERT(NVARCHAR(MAX),st.text))*2
ELSE qs.statement_end_offset
END
- qs.statement_start_offset) /2 ) )
END AS [statement_query_text]
, plan_generation_num
, qp.query_plan
FROM sys.dm_exec_query_stats AS [qs]
CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS [st]
CROSS APPLY sys.dm_exec_query_plan(plan_handle) AS [qp]
WHERE total_worker_time > 0
ORDER BY [AvgCPUTime(ms)] DESC
OPTION (RECOMPILE)
-
前の記事
javascript createElementでhtml要素を作成する 2021.05.10
-
次の記事
go言語 スライス(配列)内の値を1つずつ抽出する 2021.05.10
コメントを書く