SQL Serverのパフォーマンスモニタリング:プロファイラー、拡張イベントなど

データベースは、システム全体のパフォーマンスに直接影響を与える重要なコンポーネントです。SQL Serverを使用する際、適切なパフォーマンスモニタリングを行うことで、以下の利点を得られます。

  • ボトルネックの特定と解消
  • サーバーリソースの適切な配分
  • クエリ実行の効率化
  • ユーザーエクスペリエンスの向上

本記事では、SQL Serverの主要なパフォーマンスモニタリングツールである SQL Server Profiler(プロファイラー)、拡張イベント(Extended Events)など の使い方を学びます。


SQL Server Profilerの活用

SQL Server Profilerとは?

SQL Server Profilerは、SQL Serverの動作を追跡するためのツールです。

クエリの実行時間、デッドロック、インデックス使用状況など、パフォーマンスに関する詳細な情報を収集できます。

基本的な使い方

  1. SQL Server Management Studio (SSMS)を起動し、[ツール]メニューからSQL Server Profilerを選択します。
  2. 新しいトレースを作成します。
    • サーバーインスタンスを選択し、トレース名を設定します。
    • テンプレートを「Standard」に設定すると基本的なモニタリングが可能です。
  3. 必要なイベント(例:クエリの実行)を選択し、トレースを開始します。
  4. トレース結果を分析し、長時間実行されているクエリやエラーを確認します。

プロファイラーの利点

  • リアルタイムでデータを収集可能。
  • データベース全体のパフォーマンスを素早く把握できる。

注意点

プロファイラーはリソースを消費するため、運用環境での長時間の使用は避けるべきです。


拡張イベントの活用

拡張イベントとは?

拡張イベントは、SQL Serverの軽量なモニタリングツールで、プロファイラーの代替として推奨される機能です。

システムへの負荷を最小限に抑えながら詳細なデータを収集できます。

基本的な使い方

  1. SSMSの[管理]ノードで「拡張イベント」を展開し、新しいセッションを作成します。
  2. イベントを選択します(例:「sqlserver.sql_statement_completed」)。
  3. イベントデータを収集する出力ターゲット(例:ファイル、リングバッファ)を設定します。
  4. セッションを開始し、収集データを分析します。

おすすめのイベント

  • sqlserver.lock_acquired: ロック取得状況を監視。
  • sqlserver.sql_batch_completed: バッチの実行時間を監視。

拡張イベントの利点

  • 軽量でリソース消費が少ない。
  • カスタマイズ性が高い。

SQL Server Performance Monitorの活用

SQL Server Performance Monitor(PerfMon)とは?

SQL Server Performance Monitor(PerfMon)は、Windowsに標準搭載されているパフォーマンス監視ツールです。

SQL Serverのパフォーマンスデータをリアルタイムで収集し、CPU使用率・メモリ使用量・ディスクI/Oなどのリソースの負荷を視覚的に確認できます。

主な機能

  • システム全体のリソース使用状況をリアルタイムでモニタリング
  • SQL Serverのパフォーマンスカウンターを利用した詳細分析
  • 過去のデータをログに記録し、トレンド分析が可能

起動方法

  1. Windows + R を押して「ファイル名を指定して実行」を開く
  2. perfmon と入力し、Enterキーを押す
  3. 「パフォーマンスモニター」ウィンドウが開く

パフォーマンスカウンターの設定

SQL Serverのパフォーマンスカウンターとは?

SQL Serverには、様々なパフォーマンスカウンターが用意されています。以下の主要なカウンターを設定することで、システムのリソース使用状況を詳細に把握できます。

主要なパフォーマンスカウンター

カテゴリカウンター名監視するべきポイント
CPU% Processor TimeCPUの使用率が高すぎないか(80%以上が継続すると要注意)
メモリSQL Server:Buffer Manager\Buffer Cache Hit Ratioキャッシュヒット率が低いと、物理メモリ不足の可能性
I/OPhysicalDisk\Avg. Disk sec/Readディスクの読み取り速度が遅くないか
I/OPhysicalDisk\Avg. Disk sec/Writeディスクの書き込み速度が遅くないか
SQL ServerSQL Server:SQL Statistics\Batch Requests/secSQLのリクエスト処理速度が適切か

パフォーマンスカウンターの追加手順

  1. perfmon を開く
  2. 「パフォーマンスモニター」を選択
  3. + ボタンをクリックし、カウンターを追加
  4. 「SQL Server」カテゴリを選び、必要なカウンターを選択

演習問題

以下の内容を参考に、SQL Serverのパフォーマンスモニタリングを実践してみましょう。

問題1: CPU使用率の監視

SQL Server Performance MonitorでCPU使用率を監視する際に、適切なカウンターはどれですか?

  1. Buffer Cache Hit Ratio
  2. % Processor Time
  3. Avg. Disk sec/Read
  4. Batch Requests/sec

問題2: 長時間実行されるクエリの特定

拡張イベントを使用して、1秒以上かかるクエリを特定するセッションを作成してください。


演習問題の解答例

解答例1: CPU使用率の監視

解答:2. % Processor Time

解答例2: 長時間実行されるクエリの特定

拡張イベントで以下の設定を行います。

  1. イベント「sqlserver.sql_statement_completed」を選択。
  2. フィルタで「duration >= 1000000」(1秒以上)を設定。
  3. 出力ターゲットをリングバッファに設定して開始。

まとめ

SQL Serverのパフォーマンスモニタリングを適切に行うことで、システムの効率を最大化できます。

本記事で紹介したプロファイラー、拡張イベント、DMVを活用し、運用環境でのパフォーマンスチューニングを実践してください。

演習問題を解くことで、モニタリングスキルをさらに向上させることができます。