はじめに
Microsoft SQL Server において、CPU 負荷をかけているクエリを確認する方法を紹介します。
CPU 負荷をかけているクエリ確認方法
「ファイル名を指定して実行(Windows + R
)」から perfmon
を入力・実行し、パフォーマンスモニターを起動します。
次にパフォーマンスモニターを選択し、「追加ボタン」をクリックします。
Thread カウンターの %Processor Time
と ID Thread
を選択し、<すべてのインスタンス> を選択して「検索」をクリックします。
sqlservr/数字
を全て選択して「追加」をクリックし「OK」をクリックします。
グラフの種類を「レポート」に変更します。
%Processor Time
(負荷)が上昇している ID Thread
を検索します。
本例では、ID Thread 3948
の負荷が上昇しています。
SQL Management Studio で「新しいクエリ」をクリックし、以下のクエリを実行して ID Thread 3948
の詳細を確認します。
SELECT spid, kpid, dbid, cpu, memusage , status, open_tran
FROM sys.sysprocesses
WHERE kpid = 3948
本例では、dpid(DB を示す ID)は 1
、sqid(DB に対するクエリを示す ID) は 53
となっています。
以下のクエリを実行して、どの DB に負荷がかかっているかを確認します。
SELECT database_id, name
FROM sys.databases
WHERE database_id = 1
本例では、DB は master
となっています。
以下のクエリを実行して、DB に負荷をかけているクエリを確認します。
dbcc inputbuffer(53)
DB に負荷をかけているクエリの情報が表示されます。
参考:テスト負荷の作成
SQL Server の CPU に、テスト負荷をかけるクエリを作成することができます。
SQL Management Studio で「新しいクエリ」をクリックします。
以下のクエリを実行します。
DECLARE @Str varchar(100)
WHILE (1=1)
BEGIN
SET @Str = @@CPU_BUSY
END
リソースモニターで sqlservr.exe
プロセスの CPU 使用率が上昇していることを確認できます。
以上