データベースは、システム全体のパフォーマンスに直接影響を与える重要なコンポーネントです。SQL Serverを使用する際、適切なパフォーマンスモニタリングを行うことで、以下の利点を得られます。
- ボトルネックの特定と解消
- サーバーリソースの適切な配分
- クエリ実行の効率化
- ユーザーエクスペリエンスの向上
本記事では、SQL Serverの主要なパフォーマンスモニタリングツールである SQL Server Profiler(プロファイラー)、拡張イベント(Extended Events)など の使い方を学びます。
SQL Server Profilerの活用
SQL Server Profilerとは?
SQL Server Profilerは、SQL Serverの動作を追跡するためのツールです。
クエリの実行時間、デッドロック、インデックス使用状況など、パフォーマンスに関する詳細な情報を収集できます。
基本的な使い方
- SQL Server Management Studio (SSMS)を起動し、[ツール]メニューからSQL Server Profilerを選択します。
- 新しいトレースを作成します。
- サーバーインスタンスを選択し、トレース名を設定します。
- テンプレートを「Standard」に設定すると基本的なモニタリングが可能です。
- 必要なイベント(例:クエリの実行)を選択し、トレースを開始します。
- トレース結果を分析し、長時間実行されているクエリやエラーを確認します。
プロファイラーの利点
- リアルタイムでデータを収集可能。
- データベース全体のパフォーマンスを素早く把握できる。
注意点
プロファイラーはリソースを消費するため、運用環境での長時間の使用は避けるべきです。
拡張イベントの活用
拡張イベントとは?
拡張イベントは、SQL Serverの軽量なモニタリングツールで、プロファイラーの代替として推奨される機能です。
システムへの負荷を最小限に抑えながら詳細なデータを収集できます。
基本的な使い方
- SSMSの[管理]ノードで「拡張イベント」を展開し、新しいセッションを作成します。
- イベントを選択します(例:「sqlserver.sql_statement_completed」)。
- イベントデータを収集する出力ターゲット(例:ファイル、リングバッファ)を設定します。
- セッションを開始し、収集データを分析します。
おすすめのイベント
- 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のパフォーマンスカウンターを利用した詳細分析
- 過去のデータをログに記録し、トレンド分析が可能
起動方法
- Windows + R を押して「ファイル名を指定して実行」を開く
- perfmon と入力し、Enterキーを押す
- 「パフォーマンスモニター」ウィンドウが開く
パフォーマンスカウンターの設定
SQL Serverのパフォーマンスカウンターとは?
SQL Serverには、様々なパフォーマンスカウンターが用意されています。以下の主要なカウンターを設定することで、システムのリソース使用状況を詳細に把握できます。
主要なパフォーマンスカウンター
カテゴリ | カウンター名 | 監視するべきポイント |
---|---|---|
CPU | % Processor Time | CPUの使用率が高すぎないか(80%以上が継続すると要注意) |
メモリ | SQL Server:Buffer Manager\Buffer Cache Hit Ratio | キャッシュヒット率が低いと、物理メモリ不足の可能性 |
I/O | PhysicalDisk\Avg. Disk sec/Read | ディスクの読み取り速度が遅くないか |
I/O | PhysicalDisk\Avg. Disk sec/Write | ディスクの書き込み速度が遅くないか |
SQL Server | SQL Server:SQL Statistics\Batch Requests/sec | SQLのリクエスト処理速度が適切か |
パフォーマンスカウンターの追加手順
- perfmon を開く
- 「パフォーマンスモニター」を選択
- + ボタンをクリックし、カウンターを追加
- 「SQL Server」カテゴリを選び、必要なカウンターを選択
演習問題
以下の内容を参考に、SQL Serverのパフォーマンスモニタリングを実践してみましょう。
問題1: CPU使用率の監視
SQL Server Performance MonitorでCPU使用率を監視する際に、適切なカウンターはどれですか?
- Buffer Cache Hit Ratio
- % Processor Time
- Avg. Disk sec/Read
- Batch Requests/sec
問題2: 長時間実行されるクエリの特定
拡張イベントを使用して、1秒以上かかるクエリを特定するセッションを作成してください。
演習問題の解答例
解答例1: CPU使用率の監視
解答:2. % Processor Time
解答例2: 長時間実行されるクエリの特定
拡張イベントで以下の設定を行います。
- イベント「sqlserver.sql_statement_completed」を選択。
- フィルタで「duration >= 1000000」(1秒以上)を設定。
- 出力ターゲットをリングバッファに設定して開始。
まとめ
SQL Serverのパフォーマンスモニタリングを適切に行うことで、システムの効率を最大化できます。
本記事で紹介したプロファイラー、拡張イベント、DMVを活用し、運用環境でのパフォーマンスチューニングを実践してください。
演習問題を解くことで、モニタリングスキルをさらに向上させることができます。