本文へジャンプ

DB2 Developer Domain  > データベース (DB2) > 困ったときの、DB2 UDB調査ポータル > パフォーマンス問題の、DB2 UDB調査・対策チェックリスト  > 

パフォーマンス問題の、DB2 UDB調査・対策チェックリスト (調査&対策3.1)


概要

DB2® に原因があるか、それとも他に原因があるかを切り分けます。切り分けた結果、DB2に問題があるという当たりを得られましたか?

調査の動機 性能劣化前の元の状態(Goodケースと呼びます)と現在の遅くなった状態(Badケースと呼びます)を同じ環境で同じデータを用いた形で、厳密に比較する手法で、ボトルネックで問題発生のきっかけ(トリガー)は何なのかを論理的に切り分けていきます。ここでの調査&対策は、後程のPAテクニカル・サービスへのコール時に報告する問診票となります。

注意:構成パラメータを変更する場合には、変更前の値を記録しておきます。変更の効果がないか逆効果の場合には、次のステップに移る前に必ず元の設定に戻しておきます。なお、DBMまたはDBの構成パラメータを変更した場合は、db2stop/db2start (または全connetを切り離す)しないと有効にならないものもあります。

ステップ1

調査2を実施してみて、Goodケースに比較して、Badケースは業務に支障をきたさない程度に改善しましたか?

業務に支障をきたさない程度に改善した場合には、このチェックリストは終了します。そうでなければ、次のステップへ進みます。

上に戻る


ステップ2

発生し始めたのはいつからか、正確な日時をお答えください。

  今日突然ですか?  
  FixPakを適用後ですか?  
  それとも?  

次のステップへ進みます。

上に戻る


ステップ3

その時、その前に何をしたら問題が発生しはじめたか(トリガー)とお考えのものを教えてください。トリガーの例として良くあるものから列挙しますので、答えるときの参考にしてください。また、各トリガーごとに実施すべき対策を示している場合は、コール前に試みてください。

調査項目 該当する場合の対策
3.1
runstats、reorgを実行したらですか?
はいの場合かつ特定のSQL文が遅くなったことが問題であれば、照会オプティマイザーの動作が原因の場合が多いので、調査を継続します。はいの場合でその他の場合は、業務に支障がある場合には調査を継続します。
3.2
データの大量挿入/更新/削除をしたらですか?
更新、load、範囲検索の処理時間はほぼレコード数に比例します。正確にはGoodケースでnレコード、Badケースでmレコードとしてほぼ計算量はそれぞれn1.2、m1.2に比例します。したがって、処理時間がその程度の増加であれば、DBとしては自然な動作です。それを超える場合は、調査を継続します。
3.3
DB2のFixPakを変更したらですか?
はいの場合は対策2.5にしたがって調査しているはずです。該当する物がなければ、調査を継続します。
3.4
DB2をバージョンアップ、リリースアップをしたらですか?
はいの場合は、最新のFixPakをあててみます。だめなら過去事例検索を行い、移行の注意点を調査することで、対策を探します。それでもだめなら調査を継続します。
3.5
DB2の設定変更をおこなったらですか?
はいの場合は、設定変更の内容を吟味し、問題がないか調査します。変更内容に問題がなければ、調査を継続します。
3.6
OSをバージョンアップ、リリースアップ、FixPak/Service Packを変更したらですか?
はいの場合は、DB2も最新のFixPakをあててみて、だめならOSの側からの調査に切り替えます。
3.7
OSの設定変更をおこなったらですか?
はいの場合は、設定変更の内容を吟味し、問題がないか調査します。変更内容に問題がなければ、調査を継続します。
3.8
アプリケーションを変更したらですか?
はいの場合は、何がGoodケースと異なっているのかという観点から調査し、DB2の問題かどうかを判定し、調査を継続します。
3.9
ミドルウェアを変更したらですか?
はいの場合は、DB2も最新のFixPakをあててみて、だめなら調査を継続します。
3.10
ハードウェアを変更したらですか?
はいの場合は、DB2の設定チューニングをおこない、だめなら調査を継続します。
3.11
DB内データ量が最近増えてきたらですか?
上の調査項目3.2と同じアクションとなります。
3.12
夜間バッチを昼間も流したらですか?
 
3.13
新しいアプリケーションを追加したらですか?
 
3.14
端末を増やしたらですか?
 
3.15
その他のトリガーが考えられますか?
調査を継続します。この場合は、厳密に同じ条件でのGoodケースとBadケースの比較データ提出が開発部門より求められます。過去事例では、約7割が比較データを提出できずに終了しています。
3.16
トリガーは不明だが、稼働中のXXXに比べて、YYYが期待より遅い(たとえばPCで動かすときに比べて・・・、このSQL文に比べて・・・)ですか?
調査を継続します。過去事例ではこの場合は、約3割が厳密に同じ条件でのGoodケースとBadケースの比較データが提出できずに終了しています。

上のいずれにも該当せず、トリガーは不明であるがとにかく遅い場合にはこのチェックリストは一度終了し、パフォーマンス・チューニングへ進みます。上の表のどれかに該当する場合には作業終了後、ステップ4へ進みます。

上に戻る


ステップ4

対策2.1でreorg, runstats, bindを実行してみた結果はどうでしょうか?rebindを実行しているがbindはしていない場合は、bindの実行をしてみます。

業務上支障がないまでに問題は解決した場合は、このチェックリストは終了します。解決しない場合は、ステップ5へ進みます。

上に戻る


ステップ5

調査2.7でネットワーク問題でないと判明している場合は、DBサーバー側の資源枯渇が性能劣化の原因ではないか、調査します。

  DBサーバー内で他のプロセス(たとえばWAS、MQ、ERPソフトや業務アプリケーション)が動いていませんか?そうであれば、それらの影響による資源枯渇が考えられます。  
  OSコマンドを用いて下の表のような資源状況を調査して、状況をお知らせください。いずれかの調査項目に該当した場合には、それへの対策もとって、その結果の様子もお知らせください。
 

お役立ちヒント:OSコマンドを用いた資源状況調査方法の紹介は、DB2 Developer Domainサイト「DB2問題判別習熟シリーズ「第9回 OSの診断とDB2の診断の組み合わせ」にあります。


PDFファイルを見るにはAdobe® Reader®が必要です。
Adobe Reader
調査項目 該当する場合の対策
5.1
問題発生時には、DBサーバーのCPU使用率が常時90%を超えていませんか?
80%以内になるように、チューニングします。チューニング方法については、「最新データベース・パフォーマンスチューニング」のp.4「チューニング・ステップ1(CPU)」が参考になります。
「最新データベース・パフォーマンスチューニング」 (313KB)
5.2
問題発生時には、メモリー使用率が常時80%を超えていませんか?
50%以内になるように、チューニングします。チューニング方法については、「最新データベース・パフォーマンスチューニング」のp.5「チューニング・ステップ2(メモリー)」が参考になります。
「最新データベース・パフォーマンスチューニング」 (313KB)
5.3
問題発生時には、ページング・スペースのページングが、BadケースはGoodケースに比較して多発していませんか?
ページングが頻発しないように、チューニングします。チューニング方法については、「最新データベース・パフォーマンスチューニング」のp.5「チューニング・ステップ2(メモリー)」が参考になります。
「最新データベース・パフォーマンスチューニング」 (313KB)
5.4
問題発生時には、ディスクI/O WAITがBadケースはGoodケースに比べ、増加していませんか? 一般に、I/O WAITが20?25%以上の場合は、ディスク・ボトルネックを調査することになります。
Goodケースと同等になるように、チューニングします。チューニング方法については、「最新データベース・パフォーマンスチューニング」のp.6「チューニング・ステップ3(DISK)」が参考になります。
「最新データベース・パフォーマンスチューニング」 (313KB)

上のいずれかに該当する場合は、DBサーバーのパフォーマンス・チューニングへ進み、このチェックリストは一度終了します。そうでなければ、調査で入手した資源に関する資料を保存後、ステップ6へ進みます。

上に戻る


ステップ6

ユニークな環境で発生するのか、それとも問題のシステム環境全体で発生するのかを調査してみた結果はいかがですか? また。調査項目によっては、アクションが指示されていますが、その結果はいかがですか?

調査項目 該当する場合の対策
6.1
他のクライアントは、同じシナリオで問題は発生しませんか?
発生しない場合は、当該クライアントを再導入し、だめなら障害としての調査に切り替えます。
6.2
他のインスタンス環境では、同じ問題は発生しませんか?
インスタンス、データベース環境の違いを見つけ、パラメータ・チューニングします。
6.3
他のDBでは、同じ問題は発生しませんか?
データベース環境の違いを見つけ、パラメータ・チューニングします。
6.4
他のユーザーでは、同じ問題は発生しませんか?
実行ユーザー環境の違いを見つけ、パラメータ・チューニングします。
6.5
(SQL文の場合)他のSQLでは同じ問題は発生しませんか?
db2batch, explainツールなどにより、相違点を見つけたのちに、PAコールします。
6.6
他のテーブル/索引では発生しませんか?
他では発生しない場合は、inspectもしくはdb2dartを流してDB破損が原因でないか調査します。そうでなければ、次のステップへ進みます。

他の環境でも発生する項目が多ければ多いほど、パフォーマンス・チューニングの必要性が疑われます。作業終了後、ステップ7へ進みます。

上に戻る


ステップ7

スナップショットを用いて、サーバー内のどのプロセス(OS、DB2、ミドルウェア、アプリケーションなど)がボトルネックかを切り分けてて見た結果は、どんな感じでしょうか?

お役立ちヒント:ツールの使用法および、解釈の仕方は、「システム・リソースの使用量に関連するDB2スナップショット要素」の節をご参照ください。

DB2プロセスがボトルネックであれば、調査で入手した資源に関する資料を保存後、ステップ8へ進みます。その他がボトルネックであればパフォーマンス・チューニングへ進み、このチェックリストは一度終了します。

上に戻る


ステップ8

下の調査を行い、結果の様子をコール時にご報告ください。

調査項目 詳細
8.1
問題箇所がSQL文の場合、SQL文の実行手段は何ですか?
静的SQL, 動的SQL, CLI, ストアードプロシージャ, SQLJ, JDBC, CLPなどがあります。
8.2
問題箇所がSQL文の場合、どの文が問題ですか?
CONNECT, SELECT, INSERT, UPDATE, DELETEなどがあります。
8.3
問題箇所がDB2ユーティリティーの場合、そのユーティリティーは何ですか?
load, reorg, backup, restore, import, exportなどがあります。
8.4
再現性は何%ですか?
 
8.5
発生頻度はどのくらいですか?
xx度/日などと回答します。
8.6
現時点で回避策はありますか?
 
8.7
PAテクニカル・サービスでも再現できる、簡潔なシナリオはご用意できますか?
 
8.8
適切な索引が作成されていますか? インデックス・アドバイザーを使用して確認しましたか?
 
8.9
区分化データベース環境(DPF)システムの時は、DB2チューニングを行いましたか?
正規化、非正規化、表スペース/コンテナー配置を検討します。

作業終了後、ステップ9へ進みます。

上に戻る


ステップ9

GoodケースとBadケースはともにシナリオとして存在し、かつ再現性はありますか? 明確なシナリオが存在し、かつ再現性があることが、開発部門での調査の条件となります。

シナリオがあり、かつ再現性がある場合には次の調査へ、そうでなければこのチェックリストは終了します。


チェックリスト(調査3.1)に戻る

上に戻る

関連情報
困ったときの、DB2 UDB調査ポータル  
初めてのDB2 UDB障害特定・対策チェックリスト  
火事場の、DB2 UDB障害特定・対策チェックリスト  
DB2問題判別 習熟シリーズ