FGとBG — Wait Eventの2種類
STATSPACKのWait Eventsセクションは Foreground(FG) と Background(BG) に分離されています。 これがAWRと異なる重要な点です。
| 種類 | 対象プロセス | 診断の意義 |
|---|---|---|
| Foreground Wait Events | ユーザーセッション | ユーザーが体感する遅延の直接原因 → 最優先で分析 |
| Background Wait Events | DBWn/LGWR/ARCnなどOracleバックグラウンドプロセス | ディスクI/O・REDO書き込みのボトルネック把握 |
| Wait Events (fg and bg) | FG+BG合算 | 全体俯瞰には使えるが、個別診断はFG/BG分離で行う |
全体フローは PART 01。Wait Eventsセクションの定義は PART 04 — Wait Events Statistics 詳細(定義書) を参照。
Wait Eventのカテゴリ分類
Foreground Wait Eventsに現れるイベントを4カテゴリに分類します。
| カテゴリ | 代表的なイベント | 次のアクション |
|---|---|---|
| User I/O | db file sequential read, db file scattered read | PART 06 I/O分析 |
| System I/O | log file parallel write, db file parallel write | Background Wait Events も確認 |
| Concurrency | buffer busy waits, latch系, enqueue系 | PART 08 Latch/Lock |
| Commit | log file sync | コミット頻度・LGWR性能を確認 |
I/O系待機イベント
| Wait Event | 意味 | 対処の方向性 |
|---|---|---|
| db file sequential read | インデックスを使ったシングルブロック読み込み | インデックス不適切 / I/O性能不足 → PART 06 |
| db file scattered read | フルスキャンのマルチブロック読み込み | 不要なフルスキャン → PART 05 |
| direct path read temp | 一時セグメントからの読み込み | ソート/ハッシュのメモリ不足 → PART 07 |
競合系待機イベント
| Wait Event | 意味 | 対処の方向性 |
|---|---|---|
| buffer busy waits | バッファブロックの競合 | ホットブロック → PART 08 |
| latch: cache buffers chains | バッファキャッシュのLatch競合 | ホットブロック → PART 08 |
| enq: TX - row lock contention | 行ロック競合 | トランザクション設計見直し → PART 08 |
| log file sync | COMMITのREDOログ書き込み待ち | コミット頻度削減 / LGWR I/O改善 |
Wait Event Histogramの活用
Wait Event Histogram(STATSPACKのWait Events内)はイベントの待機時間分布を示します。 AVG値だけでは見えない「少数の極端に長い待機」を検出するのに有効です。
| Histogramの見方 | 診断のポイント |
|---|---|
| 1ms以下に集中 | 通常はメモリアクセス。問題なし |
| 8ms〜32msにピーク | HDD相当のI/O遅延 |
| 1秒以上の待機がある | ロック待ち・ネットワーク問題の可能性 |
ドリルダウン手順
1
Top 5 Timed Events で上位イベントを確認
Wait Event名と % DB Time を記録する
2
Foreground Wait Events でFGの詳細を確認
ユーザーへの影響が大きいFGイベントを優先的に分析
3
カテゴリを判定して専門PARTへ
I/O系 → PART 06 / 競合系 → PART 08 / SQL問題 → PART 05
4
Wait Event Histogramで待機時間分布を確認
ロング待機が少数ある場合は特定イベントの詳細を調査