パフォーマンスの監視とチューニング

データベースを監視する目的は、サーバーのパフォーマンスを評価することです。適切な監視には、現在のパフォーマンスのスナップショットを定期的にキャプチャして問題の原因となっているプロセスを特定したり、長期に渡って継続的にデータを採取してパフォーマンスの傾向を追跡する作業が必要です。Microsoft SQL Server および Microsoft Windows オペレーティング システムでは、データベースの現在の状態を参照したり、状態の変化に伴うパフォーマンスを追跡するためのユーティリティが用意されています。

SQL Server を監視すると、次のことを行えるようになります。

  • パフォーマンスを向上できるかどうかの判断。たとえば、頻繁に使用するクエリの応答時間を監視することで、テーブルに対するクエリまたはインデックスの変更が必要かどうかを判断できます。
  • ユーザーの利用状況の評価。たとえば、SQL Server のインスタンスに接続しようとするユーザーを監視することで、セキュリティが適切に設定されているかどうかを判断し、アプリケーションや開発システムをテストできます。また、実行時に SQL クエリを監視することで、クエリが正しく作成され、期待どおりの結果が得られているかどうかを判断できます。
  • 問題のトラブルシューティングや、ストアド プロシージャなどのアプリケーション コンポーネントのデバッグ。

SQL Server では動的な環境でサービスを提供しているため、監視することは重要です。アプリケーションのデータは変化します。ユーザーが必要とするアクセスの種類は変化します。ユーザーの接続方法も変化します。また、SQL Server にアクセスするアプリケーションの種類が変わる可能性もあります。SQL Server では、手動によるシステム レベルのチューニングを必要最低限に抑えるために、メモリやディスク領域などシステム レベルのリソースが自動的に管理されています。ただし、管理者は、SQL Server を監視することにより、パフォーマンスの傾向を特定して、変更が必要かどうかを判断することができます。

SQL Server のコンポーネントを効果的に監視するには、次の手順に従います。

  1. 監視目的を決定します。
  2. 適切なツールを選択します。
  3. 監視するコンポーネントを決定します。
  4. これらのコンポーネントに対するメトリックを選択します。
  5. サーバーを監視します。
  6. データを分析します。

これらの手順を順番に説明します。

監視目的の決定

SQL Server を効果的に監視するには、監視する理由を明確にする必要があります。監視する理由には、次のようなものがあります。

  • パフォーマンスのベースラインを設定する。
  • 長期にわたるパフォーマンスの変化を特定する。
  • 具体的なパフォーマンスの問題を診断する。
  • 最適化するコンポーネントまたはプロセスを特定する。
  • いくつかのクライアント アプリケーションのパフォーマンスに対する影響を比較する。
  • 現在のユーザー利用状況を監査する。
  • サーバーの負荷耐性をテストする。
  • データベース アーキテクチャをテストする。
  • メンテナンス スケジュールをテストする。
  • バックアップ プランおよび復元プランをテストする。
  • ハードウェア構成の変更時期を判断する。

適切なツールの選択

監視の理由が決まったら、適切なツールを選択する必要があります。Windows オペレーティング システムおよび SQL Server には、トランザクションを集中的に使用する環境のサーバーを監視できる、ツールの完全なセットが用意されています。これらのツールを使用すると、SQL Server データベース エンジンのインスタンスや SQL Server Analysis Services のインスタンスの状態を明確に把握することができます。

Windows で提供されている、サーバーで実行中のアプリケーションを監視するためのツールは次のとおりです。

  • システム モニタ。このツールを使用すると、メモリ、ディスク、プロセッサの使用状況などのアクティビティに関するリアルタイムのデータを収集して参照することができます。
  • パフォーマンス ログと警告。
  • タスク マネージャ。
  • Event Tracing for Windows (ETW)。このツールを使用すると、ユーザー モードのアプリケーションやカーネル モードのドライバにより発生したイベントをトレースし、ログに記録することができます。ETW は Windows オペレーティング システム内に実装されており、ETW を使用すると、ほとんどの SQL Server イベントをエクスポートできます。

Windows Server または Windows ツールの詳細については、Windows のマニュアルを参照してください。

SQL Server で提供されている SQL Server のコンポーネントを監視するためのツールは、次のとおりです。

  • SQL トレース
  • SQL Server Profiler
  • SQL Server Management Studio の利用状況モニタ
  • SQL Server Management Studio のグラフィカルなプラン表示
  • ストアド プロシージャ
  • Database Console Commands (DBCC)
  • 組み込み関数
  • トレース フラグ

SQL Server の監視ツールの詳細については、「パフォーマンス監視およびチューニング用のツール」を参照してください。

監視するコンポーネントの決定

SQL Server インスタンス監視の 3 つ目の手順は、監視するコンポーネントを決定することです。たとえば、SQL Server Profiler を使用してサーバーをトレースする場合、特定のイベントに関するデータを収集するようにトレースを定義することができます。また、状況に適用しないイベントをトレースの対象から除外することもできます。

監視するコンポーネントのメトリックの選択

監視するコンポーネントが決定したら、監視するコンポーネントのメトリックを決めます。たとえば、トレースに含めるイベントを選択したら、それらのイベントの特定のデータのみを含めるように選択することができます。トレースに関連のあるデータのみに制限すると、トレースを実行するのに必要なシステム リソースを最小限に抑えられます。

サーバーの監視

サーバーを監視するには、データを収集するように構成した監視ツールを実行します。たとえば、トレースを定義したら、トレースを実行して、サーバーで発生したイベントのデータを収集できます。

データの分析

トレースが終了したら、データを分析して、監視の目的を達成できたかどうかを判断します。達成できていない場合は、サーバーの監視に使用したコンポーネントやメトリックを変更します。

イベント データのキャプチャおよびその使用に関するプロセスは、次のとおりです。

  1. フィルタを適用して、収集するイベント データを制限します。
    イベント データを制限することで、監視シナリオに関連するイベントに集中した処理をシステムが行えるようになります。たとえば、実行速度の遅いクエリを監視する場合は、アプリケーションによって実行されたクエリの中で、特定のデータベースに対して実行時間が 30 秒以上かかるクエリだけを監視するフィルタを使用します。詳細については、「トレース フィルタを設定する方法 (Transact-SQL)」および「トレース内のイベントにフィルタを適用する方法 (SQL Server Profiler)」を参照してください。
  2. イベントを監視 (キャプチャ) します。
    監視機能を有効にすると、指定したアプリケーション、SQL Server のインスタンス、またはオペレーティング システムのデータのキャプチャがすぐに開始されます。たとえば、システム モニタでディスクの使用状況を監視している場合、ディスクの読み取りや書き込みなどのイベント データがキャプチャされ、そのデータが画面に表示されます。詳細については、「リソースの利用状況の監視 (システム モニタ)」を参照してください。
  3. キャプチャしたイベント データを保存します。
    キャプチャしたイベント データを保存すると、後で、そのデータを解析したり、SQL Server Profiler を使用して再生することができます。キャプチャしたイベント データは、データの生成元ツールで、再度読み込んで解析することができるファイルに保存されます。SQL Server Profiler では、SQL Server テーブルにイベント データを保存することができます。パフォーマンス ベースラインを作成する際は、キャプチャしたイベント データを保存することが重要です。最近キャプチャしたイベント データを比較して、パフォーマンスが最適かどうかを判断する場合、保存したパフォーマンス ベースライン データを使用します。詳細については、「SQL Server Profiler の使用」を参照してください。
  4. イベントをキャプチャするように指定された設定を含むトレース テンプレートを作成します。
    トレース テンプレートには、データをキャプチャするときに使用するイベント自体、イベント データ、およびフィルタに関する指定が含まれます。このテンプレートを使用すると、イベント、イベント データ、およびフィルタを再定義することなく、後で特定のイベント セットを監視することができます。たとえば、デッドロックの数やこれらのデッドロックに関係するユーザーの数を頻繁に監視する場合、これらのイベント、イベント データ、およびイベント フィルタを定義するテンプレートを作成して、その定義を保存しておくと、次にデッドロックを監視するときにフィルタを再適用できます。SQL Server Profiler では、この処理にトレース テンプレートが使用されます。詳細については、「トレース定義の既定値を設定する方法 (SQL Server Profiler)」および「トレース テンプレートを作成する方法 (SQL Server Profiler)」を参照してください。
  5. キャプチャしたイベント データを分析します。
    分析するには、キャプチャして保存したイベント データを、データのキャプチャに使用したアプリケーションで読み込みます。たとえば、SQL Server Profiler でキャプチャしたトレースは、SQL Server Profiler で再度読み込んで、参照および分析することができます。詳細については、「SQL Server Profiler を使用したトレースの表示と分析」を参照してください。
    イベント データの分析では、どのようなイベントがなぜ発生したのかを判断します。分析した情報に基づいて、メモリを増設する、インデックスを変更する、Transact-SQL ステートメントやストアド プロシージャ コードの問題を解決するなど、行った分析の種類に応じてパフォーマンスの向上を実現する変更を加えることができます。たとえば、データベース エンジン チューニング アドバイザを使用して、SQL Server Profiler でキャプチャしたトレースを分析し、その結果に基づいてインデックスの推奨設定を作成できます。詳細については、「物理データベース デザインのチューニング」を参照してください。
  6. キャプチャしたイベント データを再生します。
    イベントの再生では、データをキャプチャしたデータベース環境のテスト コピーを設定して、キャプチャしたイベントを実際のシステムで発生したとおりに再生できます。この機能は、SQL Server Profiler でのみ使用できます。イベントの再生速度は、実際に発生したときと同じ速度にすることができます。また、システムに負荷を与えるためにできる限り高速にしたり、多くの場合に行われるように、一度に 1 ステップずつ再生して、各イベントの発生後にシステムを分析することもできます。テスト環境で実稼動システムとまったく同じイベントを分析できるので、実稼動システムへの悪影響を防ぐことができます。詳細については、「トレースの再生」を参照してください。

このセクションの内容

トピック 説明

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

SQL Server を監視し、チューニングしてパフォーマンスを向上するために使用できる SQL Server のツールおよび Windows のツールについて説明します。

パフォーマンスの評価

SQL Server のパフォーマンス ベースラインを判断する方法を説明します。

リソースの利用状況の監視 (システム モニタ)

Windows のシステム モニタを使用して、SQL Server のリソース使用率を追跡する方法について説明します。

イベントの監視

SQL Server Profiler および SQL トレースを使用して SQL Server イベントを監視する方法について説明します。

物理データベース デザインのチューニング

データベース エンジン チューニング アドバイザを使用して、物理データベース デザイン (インデックス、インデックス付きビュー、およびパーティションを含む) をチューニングする方法について説明します。

参照

概念

エンタープライズ全体の管理の自動化

その他の技術情報

SQL Server Profiler のリファレンス
データベース エンジン チューニング アドバイザのリファレンス

ヘルプおよび情報

SQL Server 2005 の参考資料の入手