I/Oボトルネックの症状

以下のサインがあればI/Oボトルネックを疑います。

  • Top 5 Eventsに db file sequential read または db file scattered read が上位
  • Buffer Cache Hit Ratioが低い(90%未満)
  • SQL Ordered by Reads に特定SQLが突出
  • OS側でディスクI/O使用率が高い

全体フローは PART 01、Wait Eventの基礎は PART 04 — Wait Eventドリルダウン、メモリとの関係は PART 07 — メモリ分析 を参照。

Tablespace I/O Stats の読み方

Tablespace IO Stats(AWRのIO Statsセクション)は表領域単位のI/O統計です。 どの表領域でI/Oが多発しているかを把握します。

列名意味注目ポイント
Av Rd(ms)平均読み込み時間(ミリ秒)通常 10ms以下。超えたらストレージ性能を確認
Av Buf Wt(ms)平均バッファ待ち時間高い場合はバッファ競合
Reads / s1秒あたりの物理読み込み突出した表領域が問題箇所
Blks Rd / s1秒あたりの読み込みブロック数フルスキャン多発かどうかの判断

Instance Activity / IO / Buffer Poolセクションの詳細は PART 06 — Instance Activity / IO / Buffer Pool 詳細(定義書) を参照。

Datafile I/O Stats の読み方

表領域の中でさらにどのデータファイルでI/Oが多いかを特定します。 特定のデータファイルに集中している場合はストレージ配置の見直しが必要です。

確認内容判断基準
Av Rd(ms) が高いデータファイル10ms超 → そのファイルのストレージ性能を確認
Reads が特定ファイルに集中ファイルの分散配置を検討(RAID, ASM, ストライピング)
TEMP表領域のI/Oが多いソート・ハッシュのメモリ不足 → PART 07 メモリ分析
UNDO表領域のI/Oが多い長時間トランザクション or UNDO領域不足

セグメント別I/Oの特定

Segments by Physical Reads(Segment Statisticsセクション)で、 どのテーブル/インデックスが物理I/Oを引き起こしているかを特定できます。

セグメント統計意味
Segments by Physical Reads物理読み込みが多いオブジェクト(テーブル/インデックス)
Segments by Logical Readsバッファキャッシュアクセスが多いオブジェクト
Segments by Row Lock Waits行ロック競合が多いテーブル

セグメント統計の詳細は PART 09 — Segment / その他 詳細(定義書) を参照。

対処の方向性

1
SQL Ordered by Reads で原因SQLを特定
物理I/Oを引き起こしているSQLを特定 → PART 05 SQL特定
2
実行計画を確認してフルスキャンか確認
不要なFULL TABLE SCAN → インデックス追加・クエリ修正
3
Buffer Cache Hit Ratioが低い場合はメモリ増強を検討
4
Av Rd(ms) が高い場合はストレージ性能を見直す
SSD化・ストライピング・ASM再配置を検討