DBの性能改善の調査項目は役立ちそうなので纏めてみた。 マンボウさんの質問に便乗して、回答のあった着眼点を整理してみる。

処理性能改善用のトラブルシューティングシート

課題定義(主訴)

Oracle DB のData Pumpを使用したDBのエクスポート処理において、急に処理時間が長くなった。

提供サービスへの影響

  • どのような影響が発生しているか
  • 具体的な解決期限の有無
    • 期限を過ぎるとどのような影響が発生するか
  • 影響範囲(約何人のユーザーに影響を及ぼしているか)

ゴールの定義

  • 処理時間を短くしたい (Data Pumpでのバックアップ処理時間を短くしたい)
  • 処理時間の妥当性を評価したい。(何故遅くなるか原因の追求を優先したい)

前提条件の確認(事実整理)

問題となっている処理

  • どのような問題が発生しているか

    • oracle data pumpを使ってのdbのエクスポート処理
    • 処理時間が、約2倍に増加(30分->1時間程度)
  • どのようなきっかけで発生し始めたか

    • サーバーの起動後に、発生
  • 設定変更の有無

  • データ更新の有無

  • いつから問題が発生しているか

  • どのようにして問題の発生に気づいたか (エラーなどが出力されているか)

  • 現在の状況 (何らかの方法で問題を回避しているか、問題が発生し続けているか)

    • 現在は、再現していない。(様子見)
  • 再現性の有無

    • 発生頻度
    • 再現手順の有無(可能なら詳細な再現手順も)

対象環境の詳細

  • 対象のデータベース製品名
    • バージョン
    • エディション
    • Fix Pack レベル
  • OS
    • バージョン
    • エディション
    • 修正レベル
  • ハードウェア構成
    • CPU(モデル、周波数、割当コア数)
    • メモリ(OS上の空きメモリ、DBMS上の空きメモリ)
    • ディスク

対象処理の詳細

  • バックアップ容量
    • レコード件数
    • バックアップ容量
  • エクスポート対象の指定範囲
    • dbすべて / スキーマ指定 / テーブル指定 のどれか
  • オプション指定の有無
    • 並列処理
    • 圧縮オプション

問題切り分け

着眼点(確認する項目)

  • 発生時間帯
    • 時間帯の特定の傾向はないか
  • 発生時のログ(DB、OS、HWなど全般的に要確認)
    • エラーログの有無
    • その他、平常時にはない処理ログの出力がないか
  • ハードウェアの負荷状況
    • CPU(CPU負荷、動作周波数、有効コア数)
    • Memory(空きメモリ量)
    • Disk I/O(ディスクビジーでないか、エラーが出ていないか)

切り分けの結果(確認済の事実情報)

  • 環境/設定変更での改善有無
    • ウィルス対策ソフトを止めても、結果が変わらなかった
    • サーバーの再起動後に、バックアップ処理の処理時間は、改善した。
  • 既に確認したログファイル
  • 既に参照しているマニュアルや資料など

原因の可能性候補(未確認の情報)

  • (参考資料などを追記)

  • 表領域内のデータ格納効率の低下 → 再現しないので、ハズレ

    • データ入れ替えなどでハイウォーターマーク(HWM)が上がった
    • フルスキャンの対象(表領域)が多くなり、時間がかかる
    • データ量が同じでディスクI/Oネック。データの(表領域内の)物理配置依存のため、同じ物理配置の条件なら再現するはず。
    • 再編成を試して改善するか。

ハイウォーターマークを知る http://otndnld.oracle.co.jp/deploy/maintenance/pdf/know_hwm.pdf