SQL Server コンポーネントの監視
適用対象 SQL Server
SQL Server では動的な環境でサービスを提供しているため、監視することは重要です。 アプリケーションのデータは変化します。 ユーザーが必要とするアクセスの種類は変化します。 ユーザーの接続方法も変化します。 また、SQL Server にアクセスするアプリケーションの種類が変わる可能性もあります。SQL Server では、手動によるシステム レベルのチューニングを必要最低限に抑えるために、メモリやディスク領域などシステム レベルのリソースが自動的に管理されています。 管理者は、SQL Server を監視することにより、パフォーマンスの傾向を特定して、変更が必要かどうかを判断することができます。
SQL Server のコンポーネントを効果的に監視するには、次の手順に従います。
- 監視目的を決定します。
- 適切なツールを選択します。
- 監視するコンポーネントを決定します。
- これらのコンポーネントに対するメトリックを選択します。
- サーバーを監視します。
- データを分析します。
これらの手順を順番に説明します。
監視目的の決定
SQL Server を効果的に監視するには、監視する理由を明確にする必要があります。 監視する理由には、次のようなものがあります。
- パフォーマンスのベースラインを設定する。
- 長期にわたるパフォーマンスの変化を特定する。
- 具体的なパフォーマンスの問題を診断する。
- 最適化するコンポーネントまたはプロセスを特定する。
- いくつかのクライアント アプリケーションのパフォーマンスに対する影響を比較する。
- 現在のユーザー利用状況を監査する。
- サーバーの負荷耐性をテストする。
- データベース アーキテクチャをテストする。
- メンテナンス スケジュールをテストする。
- バックアップ プランおよび復元プランをテストする。
- ハードウェア構成の変更時期を判断する。
適切なツールの選択
監視の理由が決まったら、監視に適切なツールを選択する必要があります。 Windows オペレーティング システムおよび SQL Server には、トランザクションを集中的に使用する環境のサーバーを監視できる、ツールの完全なセットが用意されています。 これらのツールを使用すると、SQL Server データベース エンジンのインスタンスや SQL Server Analysis Services のインスタンスの状態を明確に把握することができます。
Windows で提供されている、サーバーで実行中のアプリケーションを監視するためのツールは次のとおりです。
- パフォーマンスモニター(Windows)を起動し、メモリ、ディスク、プロセッサの使用状況などのアクティビティに関するリアルタイムデータを収集および表示することができます。
- パフォーマンス ログと警告
- タスク マネージャ
Windows Server または Windows ツールの詳細については、Windows のマニュアルを参照してください。
SQL Server には、SQL Server のコンポーネントを監視するための次のツールが用意されています。
- 拡張イベントの概要
- SQL トレース (SQL Trace)
- SQL Server Profiler
- SQL Server Distributed Replay
- 利用状況モニター
- SQL Server Management Studio グラフィカル プラン表示
- システム ストアド プロシージャ
- データベース コンソール コマンド (DBCC)
- システム動的管理ビュー
- Microsoft SQL データベース関数とは
- トレース フラグ
重要
SQL トレースと SQL Server プロファイラー は、非推奨です。 Microsoft SQL Server の Trace や Replay オブジェクトを含む Microsoft.SqlServer.Management.Trace 名前空間も非推奨とされます。
この機能は、 SQL Serverの将来のバージョンで削除される予定です。 新規の開発作業ではこの機能を使用しないようにし、現在この機能を使用しているアプリケーションは修正することを検討してください。
代わりに拡張イベントを使用します。 拡張イベントの概要 について詳しくは、「クイック スタート:SQL Server 拡張イベント」および SSMS XEvent Profiler に関するページをご覧ください。
Note
Analysis Services のワークロード用の SQL Server Profiler は非推奨ではなく、引き続きサポートされます。
SQL Server 監視ツールを使用する方法の詳細については、「 パフォーマンス監視およびチューニング ツール」を参照してください。
監視するコンポーネントの決定
SQL Server インスタンス監視の 3 つ目の手順は、監視するコンポーネントを決定することです。 たとえば、SQL Server プロファイラー を使用してサーバーをトレースする場合、特定のイベントに関するデータを収集するようにトレースを定義することができます。 また、状況に適用しないイベントをトレースの対象から除外することもできます。
監視するコンポーネントのメトリックの選択
監視するコンポーネントが決定したら、監視するコンポーネントのメトリックを決めます。 たとえば、トレースに含めるイベントを選択したら、それらのイベントの特定のデータのみを含めるように選択することができます。 トレースに関連のあるデータのみに制限すると、トレースを実行するのに必要なシステム リソースを最小限に抑えられます。
サーバーの監視
サーバーを監視するには、データを収集するように構成した監視ツールを実行します。 たとえば、トレースを定義したら、トレースを実行して、サーバーで発生したイベントのデータを収集できます。
データの分析
トレースが終了したら、データを分析して、監視の目的を達成できたかどうかを判断します。 達成できていない場合は、サーバーの監視に使用したコンポーネントやメトリックを変更します。
イベント データのキャプチャおよびその使用に関するプロセスは、次のとおりです。
フィルターを適用して、収集するイベント データを制限します。
イベント データを制限することで、監視シナリオに関連するイベントに集中した処理をシステムが行えるようになります。 たとえば、実行速度の遅いクエリを監視する場合は、アプリケーションによって実行されたクエリの中で、特定のデータベースに対して実行時間が 30 秒以上かかるクエリだけを監視するフィルターを使用します。
拡張イベント トレースのフィルター処理の詳細については、「クイック スタート: 拡張イベント」を参照してください。
SQL トレースのフィルター処理の詳細については、「トレース フィルターの設定 (Transact-SQL)」および「トレース内のイベントへのフィルターの適用 (SQL Server Profiler)」を参照してください。
イベントを監視 (キャプチャ) します。
監視機能を有効にすると、指定したアプリケーション、SQL Server のインスタンス、またはオペレーティング システムのデータのキャプチャがすぐに開始されます。 たとえば、システム モニターでディスクの使用状況を監視している場合、ディスクの読み取りや書き込みなどのイベント データがキャプチャされ、そのデータが画面に表示されます。 詳細については、「リソースの利用状況の監視 (パフォーマンス モニター)」をご覧ください。
キャプチャしたイベント データを保存します。
キャプチャしたイベント データを保存すると、後でそのデータを分析することができます。 キャプチャしたイベント データは、データの生成元ツールで、再度読み込んで解析することができるファイルに保存されます。 パフォーマンス ベースラインを作成する際は、キャプチャしたイベント データを保存することが重要です。 最近キャプチャしたイベント データを比較して、パフォーマンスが最適かどうかを判断する場合、保存したパフォーマンス ベースライン データを使用します。
拡張イベントでは、イベント ファイル、イベント カウンター、ヒストグラム、およびリング バッファーにイベント データを保存することができます。 詳細については、「拡張イベントのターゲット」を参照してください。
SQL トレース イベント データは、分散再生ユーティリティ または SQL Server Profiler を使用して再生することもできます。 SQL Server Profiler では、ファイルまたは SQL Server テーブルにイベント データを保存することができます。 詳細については、「 SQL Server プロファイラーのテンプレートと権限」を参照してください。
イベントをキャプチャするように指定された設定を含むトレース テンプレートを作成します。
トレース テンプレートには、データをキャプチャするときに使用するイベント自体、イベント データ、およびフィルターに関する指定が含まれます。 このテンプレートを使用すると、イベント、イベント データ、およびフィルターを再定義することなく、後で特定のイベント セットを監視することができます。 たとえば、デッドロックの数やこれらのデッドロックに関係するユーザーの数を頻繁に監視する場合、これらのイベント、イベント データ、およびイベント フィルターを定義するテンプレートを作成して、その定義を保存しておくと、次にデッドロックを監視するときにフィルターを再適用できます。
拡張イベント セッション定義は、スクリプト化して再利用できるテンプレートです。 セッションを作成して管理するには、「オブジェクト エクスプローラーでのイベント セッションの管理」を参照してください。 Management Studio XEvent Profiler には、すぐに使用できるテンプレートが用意されています。 詳細については、「SSMS XEvent Profiler の使用」を参照してください。
SQL Server Profiler では、この処理にトレース テンプレートが使用されます。 詳細については、「トレース定義の既定値の設定 (SQL Server Profiler)」および「トレース テンプレートの作成 (SQL Server Profiler)」を参照してください。
ヒント
SQL トレース定義は拡張イベント セッションに変換できます。 詳細については、「既存の SQL トレース スクリプトから拡張イベント セッションへの変換」を参照してください。
キャプチャしたイベント データを分析します。
分析するには、キャプチャして保存したイベント データを、データのキャプチャに使用したアプリケーションで読み込みます。
たとえば、キャプチャされた拡張イベント トレースは、表示および分析のために SQL Server Management Studio に再読み込みすることができます。 詳細については、「SQL Server Management Studio でイベント データを表示する」を参照してください。
SQL トレース データは、表示および分析のために SQL Server Profiler に再読み込みすることができます。 詳細については、「 SQL Server Profiler を使用したトレースの表示と分析」をご覧ください。
イベント データの分析では、どのようなイベントがなぜ発生したのかを判断します。 分析した情報に基づいて、メモリを増設する、インデックスを変更する、Transact-SQL ステートメントやストアド プロシージャのコードの問題を解決するなど、行った分析の種類に応じてパフォーマンスの向上を実現する変更を加えることができます。 たとえば、データベース エンジン チューニング アドバイザーを使用して、拡張イベントまたは SQL Server Profiler でキャプチャしたトレースを分析し、その結果に基づいてインデックスの推奨設定を作成できます。
キャプチャしたイベント データを再生します (省略可能)。
イベントの再生では、データをキャプチャしたデータベース環境のテスト コピーを設定して、キャプチャしたイベントを実際のシステムで発生したとおりに再生できます。 この機能は、分散再生ユーティリティまたは SQL Server Profiler でのみ提供されます。 イベントの再生速度は、実際に発生したときと同じ速度にすることができます。また、システムに負荷を与えるためにできる限り高速にしたり、多くの場合に行われるように、一度に 1 ステップずつ再生して、各イベントの発生後にシステムを分析することもできます。 テスト環境で実稼動システムとまったく同じイベントを分析できるので、実稼動システムへの悪影響を防ぐことができます。 詳細については、「 トレースの再生」を参照してください。