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

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

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

全体フローは PART 01、Wait Eventの基礎は PART 04 — Wait Eventドリルダウン。I/O Statsセクションの定義は PART 06 — Instance Activity / IO Stats 詳細(定義書) を参照。

IO Stat by Function の読み方

IO Stat by Function はI/Oを機能(Direct Read/Write・Buffer Read/Write・LGWR・CKPT・DBWnなど)ごとに分類した統計です。 どの機能がI/Oを引き起こしているかを把握できます。

機能意味高い場合の対処
Buffer Readバッファキャッシュを介した読み込み(通常のSQL)Buffer Cache不足 → PART 07
Direct Readバッファを介さない直接読み込み(大規模ソート等)PGA不足・並列クエリ → PART 07
LGWRREDOログライタのI/Oストレージ性能不足・log file sync待機増加
CKPT/DBWnチェックポイント・DBライタのI/Odb_writer_processes増加・ストレージ改善

Tablespace IO Stats の読み方

Tablespace IO Stats は表領域単位のI/O統計です。 どの表領域でI/Oが多発しているかを把握します。

列名意味注目ポイント
Av Rd(ms)平均読み込み時間(ミリ秒)10ms以下が目安。超えたらストレージ性能を確認
Reads/s1秒あたりの物理読み込み突出した表領域が問題箇所
Blks Rd/s1秒あたりの読み込みブロック数フルスキャン多発の判断
Writes/s1秒あたりの書き込みUNDO/REDO領域が突出していないか確認

File IO Stats の読み方

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

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

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

Segments by Physical Reads(Segment Statisticsセクション)でどのオブジェクトが物理I/Oを引き起こしているかを特定します。 詳細は PART 09 — Segment / その他 詳細(定義書) を参照。

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

対処の方向性

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