NETWORK ENGINEER BLOG

Tips and Reviews for Engineers

SQL Server 負荷試験と確認方法について

SQL Server の CPU 負荷試験のためのクエリと、負荷の確認方法について紹介します。
こちらのサイトを参考にさせて頂きました。

CPU 負荷をかけるクエリと実行方法

SQL Management Studio で「新しいクエリ」をクリックします。
f:id:FriendsNow:20190728085254p:plain

以下のクエリを実行します。

DECLARE @Str varchar(100)

WHILE (1=1)
BEGIN
	SET @Str = @@CPU_BUSY
END

実行例は以下のとおりです。
f:id:FriendsNow:20190728085411p:plain

リソースモニターで "sqlservr.ext" プロセスの CPU 使用率上昇が確認できます。
f:id:FriendsNow:20190728085456p:plain

CPU 負荷をかけるクエリの確認方法

パフォーマンスモニターを起動します。
f:id:FriendsNow:20190728085506p:plain

パフォーマンスモニターを選択して「追加ボタン」をクリックします。
f:id:FriendsNow:20190728085522p:plain

"Thread" カウンターの "%Processor Time" と "ID Thread" を選択し、<すべてのインスタンス> を選択して「検索」をクリックします。
f:id:FriendsNow:20190728085542p:plain

"sqlservr/数字" を全て選択して「追加」をクリックし「OK」をクリックします。
f:id:FriendsNow:20190728085611p:plain

グラフの種類を「レポート」に変更します。
f:id:FriendsNow:20190728085624p:plain

"%Processor Time" が上昇している "ID Thread" を検索します。
f:id:FriendsNow:20190728085644p:plain

本例では、ID Thread 3948 の負荷が上昇しています。
f:id:FriendsNow:20190728085652p:plain

SQL Management Studio で「新しいクエリ」をクリックし、以下のクエリを実行して 3948 の詳細を確認します。

SELECT spid, kpid, dbid, cpu, memusage , status, open_tran
FROM sys.sysprocesses 
WHERE kpid = 3948

本例では、dpid*1は "1"、sqid*2は "53" となっています
f:id:FriendsNow:20190728090150p:plain

以下のクエリを実行して、どの DB に負荷がかかっているかを確認します。

SELECT database_id, name 
FROM sys.databases 
WHERE database_id = 1

本例では、DB は "master" となっています。
f:id:FriendsNow:20190728090248p:plain

以下のクエリを実行して、DB に負荷をかけているクエリを確認します。

dbcc inputbuffer(53)

テスト負荷用に作成したクエリによることが確認できます。
f:id:FriendsNow:20190728090309p:plain

以上

*1:DB を示す ID

*2:DB に対するクエリを示す ID