SQL Server AWR 相当レポート — はじめに・取得方法の概要と Oracle AWR 対応表
Oracle の AWR(Automatic Workload Repository)レポートで得られる性能情報を SQL Server で取得するには、 いくつかの異なる手段を組み合わせる必要があります。 本シリーズでは、DMV・Query Store・Extended Events・PerfMon・SSMS 標準レポートの 5 つの取得方法を それぞれ独立した記事で解説します。このガイドではその全体像と Oracle AWR との対応表を整理します。
1. SQL Server に AWR が存在しない理由
Oracle の AWR は、Diagnostics Pack ライセンスが必要な有償機能ですが、 指定スナップショット間の性能情報(待機イベント・SQL 統計・I/O・メモリ等)を 一枚のレポートとして出力できる非常に強力なツールです。
SQL Server には AWR に相当する「単一の統合レポート機能」は標準では存在しません。 代わりに、目的別に分散した複数の機能を組み合わせることで、 AWR と同等またはそれ以上の情報を取得できます。 SQL Server 2016 以降では Query Store の追加により、Oracle AWR の SQL 統計セクションに相当する ワークロード履歴管理が大幅に強化されています。
Query Store の機能拡張(Wait Statistics の記録、Forced Plan の改善など)や、 Intelligent Query Processing により、AWR に近い情報を SQL 単位で取得しやすくなっています。
2. 5 つの取得方法の概要
3. Oracle AWR セクションと SQL Server の対応表
以下は Oracle AWR の主要セクションと SQL Server の取得方法の対応表です。 1 つの AWR セクションに複数の SQL Server 手段が対応する場合があります。
| Oracle AWR セクション | SQL Server の対応手段 | 主な DMV / 機能名 |
|---|---|---|
| Report Summary — DB Time / Elapsed Time | DMV / PerfMon | sys.dm_os_wait_stats SQL Server:SQL Statistics カウンタ |
| Top 5 Timed Events(待機イベント) | DMV / Query Store | sys.dm_os_wait_stats sys.query_store_wait_stats |
| SQL Statistics — Top SQL by Elapsed Time / CPU | DMV / Query Store | sys.dm_exec_query_stats sys.query_store_runtime_stats |
| SQL Statistics — Top SQL by Logical Reads | DMV / Query Store | sys.dm_exec_query_stats (logical_reads) sys.query_store_runtime_stats |
| Instance Activity — Redo / Undo 統計 | DMV / PerfMon | sys.dm_io_virtual_file_stats SQL Server:Databases カウンタ |
| Buffer Pool / SGA メモリ統計 | DMV / PerfMon | sys.dm_os_buffer_descriptors sys.dm_os_memory_clerks SQL Server:Buffer Manager カウンタ |
| I/O 統計 | DMV / PerfMon | sys.dm_io_virtual_file_stats sys.dm_os_wait_stats(I/O 待機) |
| Latch / Mutex 統計 | DMV | sys.dm_os_latch_stats sys.dm_os_spinlock_stats |
| Enqueue / Lock 統計 | DMV / Extended Events | sys.dm_tran_locks sys.dm_os_waiting_tasks XE: lock_deadlock イベント |
| Segment Statistics | DMV | sys.dm_db_index_usage_stats sys.dm_db_partition_stats |
| Advisory(PGA / SGA Advisor) | DMV / SSMS | sys.dm_os_memory_cache_counters SSMS: Memory Usage レポート |
| Undo 統計 | DMV | sys.dm_tran_version_store_space_usage sys.dm_db_xtp_transactions |
| デッドロック グラフ | Extended Events | XE: xml_deadlock_report system_health セッション |
| 実行計画(SQL Plan Statistics) | DMV / Query Store | sys.dm_exec_cached_plans sys.query_store_plan |
4. どの方法をいつ使うか — 使い分けガイド
| シナリオ | 推奨手段 | 理由 |
|---|---|---|
| 現在のボトルネックを即座に確認したい | DMV / SSMS Activity Monitor | インスタンス累積値をリアルタイムに参照できる。SSMS は GUI で直感的。 |
| 昨日から今日にかけて重くなった SQL を調べたい | Query Store | 時間帯別・クエリ別の実行統計履歴が自動保存されており、期間比較が容易。 |
| 特定の SQL 実行や待機イベントを詳細にトレースしたい | Extended Events | イベント駆動型のため軽量。SQL Profiler の代替として標準推奨。 |
| CPU・メモリ・I/O の傾向を長期的に記録したい | PerfMon | Windows 標準ツールで OS・SQL Server を一括収集。データコレクタで自動化可能。 |
| 定期的な性能レポートを非エンジニアに共有したい | SSMS 標準レポート | GUI でドリルダウンでき、コマンドなしで主要指標を可視化できる。 |
sys.dm_os_wait_stats などの DMV は SQL Server の起動(または DBCC SQLPERF による手動リセット)からの累積値です。 Oracle AWR のようなスナップショット間の差分を自動取得する機能は DMV 単体にはなく、 定期的に値を取得して差分を計算するスクリプトが必要です。 Query Store はこの課題を解決しており、期間指定での統計閲覧が可能です。
5. シリーズ構成
| PART | タイトル | 主なトピック |
|---|---|---|
| 01 | はじめに(本記事) | 取得方法の全体像・Oracle AWR 対応表・使い分けガイド |
| 02 | DMV(動的管理ビュー)による取得とセクション定義 | 主要 DMV 一覧・SQL クエリ集・各セクションの意味 |
| 03 | Query Store による取得とセクション定義 | 有効化手順・ビュー一覧・期間指定クエリ・SSMS GUI 操作 |
| 04 | Extended Events による取得とセクション定義 | セッション作成・イベント一覧・XDL ファイル解析 |
| 05 | Performance Monitor(PerfMon)による取得とセクション定義 | 主要カウンタ一覧・データコレクタ設定・しきい値の目安 |
| 06 | SSMS 標準レポートによる取得とセクション定義 | Activity Monitor・Performance Dashboard・各レポートの読み方 |