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