パフォーマンス監視およびチューニング ツール

適用対象:yesSQL Server (サポートされているすべてのバージョン)

Microsoft SQL Server には、SQL Server のイベントを監視し、物理的なデータベース設計をチューニングするための包括的なツールセットが用意されています。 どのツールを選択するかは、実行する監視またはチューニングの種類や、監視するイベントによって異なります。

SQL Server 監視およびチューニングツールを次に示します。

ツール 説明
組み込み関数 (Transact-sql SQL) 組み込み関数では、サーバーが起動されてから SQL Server のアクティビティに関するスナップショット統計が表示されます。これらの統計情報は、定義済みの SQL Server カウンターに格納されます。 たとえば、 @ @CPU_BUSYには、CPU が SQL Server コードを実行している時間が含まれています。@ @CONNECTIONSには、SQL Server 接続または接続試行の数が含まれています。 @ @PACKET_ERRORSには、SQL Server 接続で発生しているネットワークパケットの数が含まれています。
DBCC (Transact-SQL) DBCC (データベース コンソール コマンド) ステートメントによって、パフォーマンス統計とデータベースの論理的および物理的一貫性を確認できます。
データベース エンジン チューニング アドバイザー (DTA) データベースエンジンチューニングアドバイザーは、チューニングするデータベースに対して実行される SQL transact-sql ステートメントのパフォーマンスの影響を分析します。 データベース エンジン チューニング アドバイザーでは、インデックス、インデックス付きビュー、およびパーティションを追加、削除、または変更するための推奨設定が提供されます。
Database Experimentation Assistant (DEA) Database Experimentation Assistant (DEA) は、SQL Server の新しい A/B テスト ソリューションです。 特定のワークロードに対して、対象となるバージョンの SQL Server データベースエンジンを評価するのに役立ちます。 以前の SQL Server バージョン (SQL Server 2005 (1.x)) から新しいバージョンの SQL Server にアップグレードする場合、dea は比較分析メトリックを提供できます。
エラー ログ Windows アプリケーションイベントログを使用すると、Windows サーバーで発生しているイベントの全体像と、オペレーティングシステム全体を Windows、SQL Server、SQL Server エージェント、フルテキスト検索のイベントが表示されます。 このファイルには、他の場所では利用できない SQL Server のイベントに関する情報が含まれています。 エラーログの情報を使用して、SQL Server 関連の問題のトラブルシューティングを行うことができます。
拡張イベント 拡張イベントは軽量なパフォーマンス監視システムであり、使用されるパフォーマンス リソースはごくわずかです。 拡張イベントには、セッション データを容易かつ迅速に作成、変更、表示、分析するためのグラフィカル ユーザー インターフェイスが 3 つ用意されています (新規セッション ウィザード、[新しいセッション]、XE Profiler)。
実行関連の動的管理ビューおよび関数 (Transact-sql SQL) 実行関連の DMV によって、実行関連情報を確認できます。
ライブ クエリ統計 (LQS) クエリ実行ステップに関するリアルタイムの統計情報を表示します。 このデータはクエリの実行中に利用できるため、これらの実行統計はクエリ パフォーマンス問題のデバッグで非常に役立ちます。
リソースの利用状況の監視 (システム モニター) システム モニターでは、使用中のバッファー マネージャー ページ要求の数などのリソース使用量が主に追跡され、イベントを監視するための定義済みオブジェクトおよびカウンターやユーザー定義カウンターを使用して、サーバーのパフォーマンスおよび利用状況を監視できます。 システム モニター (Microsoft Windows NT 4.0 の場合はパフォーマンス モニター) は、イベントに関するデータではなく、メモリの使用量、アクティブなトランザクションの数、ブロックされたロックの数、CPU の利用状況など、イベントの数と比率を収集します。 特定のカウンターにしきい値を設定して、オペレーターに通知する警告を生成できます。

システム モニターは Microsoft Windows Server および Windows オペレーティング システムで機能します。 Windows NT 4.0 以降で SQL Server のインスタンスを (リモートまたはローカルで) 監視できます。

SQL Server Profiler とシステムモニターの主な違いは、SQL Server Profiler がデータベースエンジンイベントを監視するのに対し、システムモニターはサーバープロセスに関連付けられているリソースの使用状況を監視することです。
利用状況モニターを開く方法 (SQL Server Management Studio) SQL Server Management Studio の利用状況モニターは、現在のアクティビティのアドホックビューに役立ち、次の情報をグラフィカルに表示します。

-SQL Server のインスタンスで実行されているプロセス
- ブロックされているプロセス
- ロック
- ユーザーの利用状況
パフォーマンス ダッシュボード SQL Server Management Studio のパフォーマンスダッシュボードは、SQL Server に現在のパフォーマンスのボトルネックがあるかどうかをすばやく特定するのに役立ちます。
クエリ調整アシスタント (QTA) クエリチューニングアシスタント (qta) 機能では、推奨されるワークフローを使用して、新しい SQL Server バージョンへのアップグレード中にパフォーマンスの安定性を維持するようにユーザーに指示します。「クエリストアの使用シナリオ新しい SQL Server へのアップグレード中にパフォーマンスの安定性を維持する」セクションで説明します。
クエリ ストア クエリ ストア機能を使用すると、クエリ プランの選択やパフォーマンスを把握できます。 これにより、クエリ プランの変更によって生じるパフォーマンスの違いがすばやくわかるようになり、パフォーマンス上のトラブルシューティングを簡略化できます。 クエリのストアは、自動的にクエリ、プラン、および実行時統計の履歴をキャプチャし、確認用に保持します。 データは時間枠で区分されるため、データベースの使用パターンを表示して、サーバー上でクエリ プランが変わった時点を確認することができます。
SQL トレース (SQL Trace) トレースの作成、フィルター処理、および定義を行うストアドプロシージャを SQL します。

sp_trace_create (Transact-SQL)
sp_trace_generateevent (Transact-sql SQL)
sp_trace_setevent (Transact-SQL)
sp_trace_setfilter (Transact-SQL)
sp_trace_setstatus (Transact-sql SQL)
SQL Server Distributed Replay Microsoft SQL Server 分散再生では、複数のコンピューターを使用してトレースデータを再生し、ミッションクリティカルなワークロードをシミュレートできます。
sp_trace_setfilter (Transact-SQL) SQL Server Profiler は、バッチやトランザクションの開始などのエンジンプロセスイベントを追跡して、サーバーおよびデータベースの利用状況 (デッドロック、致命的なエラー、ログインの利用状況など) を監視できます。 SQL Server テーブルまたはファイルに SQL Server Profiler データをキャプチャして後で分析することができます。また、SQL Server ステップごとにキャプチャされたイベントを再生して、何が起こったかを正確に確認することもできます。
システム ストアド プロシージャ (Transact-SQL) 次の SQL Server システムストアドプロシージャは、多くの監視タスクに対して強力な手段を提供します。

sp_who (SQL transact-sql):
現在実行中のステートメント、およびステートメントがブロックされているかどうかなど、現在の SQL Server のユーザーおよびプロセスに関するスナップショット情報をレポートします。

sp_lock (SQL transact-sql):
このシステム ストアド プロシージャは、オブジェクト ID、インデックス ID、ロックの種類、ロックを適用する種類またはリソースなど、ロックに関するスナップショット情報を報告します。

sp_spaceused (SQL transact-sql):
このシステム ストアド プロシージャは、テーブルまたはデータベース全体が使用している現在のディスク容量の推定値を表示します。

sp_monitor (SQL transact-sql):
CPU 使用量、I/O 使用量、 sp_monitor を最後に実行してからのアイドル時間などの統計データを表示します。
トレース フラグ (Transact-SQL) トレース フラグでは、サーバー内の特定の利用状況に関する情報が示されます。このトレース フラグを使用して、問題やデッドロック チェーンなどのパフォーマンスの問題を診断します。

監視ツールの選択

どの監視ツールを使用するかは、監視対象のイベントまたは利用状況によって決まります。

イベントまたは利用状況 拡張イベント SQL Server プロファイラー Distributed Replay システム モニター 利用状況モニター Transact-SQL エラー ログ パフォーマンス ダッシュボード
傾向分析 はい はい はい
キャプチャしたイベントの再生 可 (1 台のコンピューターから) 可 (複数のコンピューターから)
アドホック監視 1 はい はい はい はい はい
警告の生成 はい
グラフィカル インターフェイス はい はい はい はい はい はい
カスタム アプリケーション内での使用 はい はい2 はい

1SQL Server Management Studio XEvent Profiler の使用
2 システム SQL Server Profilerを使用する。

Windows 監視ツール

Windows オペレーティング システムおよび Windows Server 2003 では、次の監視ツールが提供されています。

ツール 説明
タスク マネージャー システム上で実行中のプロセスやアプリケーションの概要を示します。
ネットワーク モニター エージェント ネットワーク トラフィックを監視します。

Windows オペレーティング システムまたは Windows Server ツールの詳細については、Windows のマニュアルを参照してください。