SQL Server 2005 パフォーマンス・チューニングツール;DMVStats 1.01

今回はCodePlexで紹介されているDMVStatsについて説明したいと思います。

DMVStats:https://www.codeplex.com/sqldmvstats

注:下記内容に関する詳細な確認をご希望される場合は上記のサイトをご参照ください。CodePlexはMicrosoftのオープンソース・プロジェクトを掲載しているWebサイトです。CodePlexに関する詳細はこちらのページをご参照ください。

https://www.codeplex.com/CodePlex

DMVStatsはSQL Server 2005で提供される動的管理ビュー(DMV)の情報をデータベースに格納し、パフォーマンスの分析・レポートを行うためのアプリケーションです。動作環境はSQL Server 2005上で、それ以前のバージョンでは動作しません。また、分析した結果をレポートとして表示するためReportingサービスが必要になります。

このツールを使用することで、以下のことを調査できます。

l Waiting Timeの時系列な情報、および、Signal WaitとResource Waitの比率

l どのようなリソースがボトルネックとなっているか(Wait Type)

l どのリクエスト(クエリ)が、どのリソースのために待たされているか

l リソースを多く使用しているリクエスト(クエリ)はどれか

l ブロックされているリクエスト、および、ブロックしているリクエスト

インストール方法は以下の通りです。

1. 上記サイトよりdmvstats_setup.zipをダウンロードする

2. Zipファイルの中のdmvstats.exeを実行し、適当な場所にファイルを展開する

3. コマンドプロンプトよりInstallDMVStatsDBProcs.cmdを実行する
分析対象のSQL Server インスタンスに合わせて以下のパラメータを変更する(デフォルトで動作している場合は変更の必要はありません)
SQLSERVER_MACHINE
SQLSERVER_INSTANCE

4. コマンドプロンプトよりDeployReports.cmdを実行する
レポートサーバーのURLが「https://localhost/reportserver」でない場合は以下の行を書き換えてください
set TargetServerURL=https://localhost/reportserver

インストールが終了したら、レポーティングサーバーに接続して設定を行います。

例:デフォルトの設定でインストールを行った場合、Webブラウザで”https://localhost/reportserver”のサイトを開き、DMVStatsのディレクトリをクリックすると下記のような画面が表示されます。

 

Fig1. DMVStats Top

 

まずはConfigure DMVstatsレポートを使って監視対象のデータベースを選択します。

DMVStatsはSQL ServerのAgentを使ってDMVの情報を取得しますが、初期設定ではDMVをサンプリングするJobがDisableになっているのでEnableにします。以下はtpccデータベースを監視対象に選んだ例です(監視を開始するためには”enable jobs”をクリックする必要があります)。

 

Fig2. DMVStats; Configure DMVStats

 

次のステップに進む前にデータの採取方法について簡単に説明させていただきます。DMVStatsは次の2つの方法でDMVのデータをサンプリングしています。それぞれの特徴は以下のようになっています。

1. Sample
統計されない逐次変化するデータを採取するのに適している。デフォルトでは20秒間隔でサンプリングを行う。インストール時に作成されたストアド・プロシージャを用いてサンプリング間隔を変更できるが15秒以上に設定することを推奨。
サンプリング間隔を30秒に設定する例:
 exec msdb.dbo.sp_update_schedule

    @name=N'DMVstats Sample Schedule'

    ,@freq_subday_type=2,@freq_subday_interval=30
ここで@freq_subday_typeに指定されている‘2’は秒を表します。

2. Snapshot
統計的なデータをまとめて採取するのに適している。デフォルトでは5分間隔でスナップショットを採取する。インストール時に作成されたストアド・プロシージャを用いてサンプリング間隔を変更できる。
サンプリング間隔を10分に設定する例:
 exec msdb.dbo.sp_update_schedule

    @name=N'DMVstats Snapshot Schedule'

    ,@freq_subday_type=4,@freq_subday_interval=10
ここで@freq_subday_typeに指定されている‘4’は分を表します。

次にBaselineを設定します。Baselineは採取されたデータをまとめて一つの単位として定義するものです。Baselineの設定はConfigure Baselinesレポートを使用します。Baselineを構成する単位はSnapshotです。何時から何時までに採取されたSnapshotを含めるかを指定します。「レポートの表示」ボタンを押すとBaselineが作成されます(Baselineを作成するためには少なくとも1つのSnapshotが作成されている必要があります)。

 

Fig3. DMVStats; Configure Baselines

 

 

以上で設定は終了です。以下はWait StatsレポートとAnalyze Block Infoレポートの例です。

 

以下のグラフからWaiting Timeの時系変化、および、Signal WaitとResource Waitの比率がわかります。

Wait Stats; Signal vs. Resource 

Fig4. Wait Stats; Signal vs. Resource

 

以下のグラフからWait Typeの比率がわかります。

 

Fig5. Wait Stats; Category waits detail snapshot

 

以下のレポートから、ブロックされているクエリと、そのクエリをブロックしているクエリがわかります。

Fig6. Analyze Block Info report

 

 

コミュニティにおけるマイクロソフト社員による発言やコメントは、マイクロソフトの正式な見解またはコメントではありません。