連載
» 2004年10月09日 00時00分 公開

データベースの問題を発見するスクリプトDB2チューニング・ベストプラクティス(4)(1/2 ページ)

本連載はDB2 UDB V8のシステム管理者、およびアプリケーション開発者のために、パフォーマンス・チューニングに必要な技法を紹介する。記事の原文はIBM developerWorksで2004年4月に公開された「Best practices for tuning DB2 UDB v8.1 and its databases」で、DB2の設計、配置、構成、SQL、運用管理、モニタリングといった内容を、実践的な操作を中心に解説している。想定する読者はDB2データベース管理の中級レベルのスキルを持っているユーザーである。スクリーン・ショットなど一部のコンテンツは、日本語版のものに差し替えている。(編集局)

[Fraser McArthur,DB2 Enablement Consultant/IBM Canada Ltd.]

パフォーマンス向上のためのスナップショット・モニタ(前編)

developerworks

本記事は、IBM developerWorksからアットマーク・アイティが許諾を得て翻訳、転載したものです。


 スナップショット・モニタを使用すると、ある一定の期間におけるデータベースの動作を識別できます。例えば、メモリがどのように使用されているか、ロックがどのように獲得されているか、といった情報を得ることができます。スナップショット・モニタは、構成を微調整したり、問題(例えばステートメントの実行時間が長い)を識別したりするための手法として利用されます。ただし、すでに「構成アドバイザー」を使用している場合は、パフォーマンスを大きく改善することは難しいでしょう。

 分析すべきデータを収集する最も簡単な方法は、スクリプトを使用して、アプリケーションを実行しながらスナップショット・モニタを実行することです。リスト1またはリスト2のようなスクリプトを使用すると、分析に必要な情報を収集できます。最初は、これらのスクリプトを60秒間ずつ数回実行します。このようにすると、アプリケーション動作の適切なサンプルを得ることができ、扱う情報が多くなりすぎずに済みます。

 この2つのスクリプトは動作がわずかに異なりますが、どちらの場合も希望するスナップショット出力が得られます。

 後続のセクションでは、DBMおよびデータベース構成パラメータの最適な設定を見つけるための手段として、スナップショット・モニタを頻繁に使用します。

  • 参照情報→システムモニター→論理データ・グループ→スナップショット・モニター・インターフェースの論理データ・グループへのマッピング

  • 参照情報→システムモニター→論理データ・グループ→スナップショット・モニターの論理データ・グループおよびモニター・エレメント

動的SQLステートメント

 リスト1およびリスト2のスクリプトは、「get snapshot for all on dbname」を発行します。この出力結果には、「get snapshot for dynamic SQL on dbname」からの出力がすべて含まれます。収集されるSQLステートメントの数が多くない場合は、モニタ期間を長くしてください。出力結果の中で1つのSQLステートメントについての「Dynamic SQL Snapshot Result」(動的SQLのスナップショットの結果)セクションは、リスト3のようになります。

 出力結果の中で特に役立つ情報は、以下のものです。

「Number of executions」(実行回数)

  これは、適切にチューニングすべき重要なステートメントを識別するのに役立ちます。また、ステートメントの平均実行時間を計算するためにも役立ちます。

 何回も繰り返し実行されるステートメントの場合、1回の実行ではシステムに大きな負荷はかからないかもしれませんが、累積結果としてパフォーマンスが大きく低下してしまうことがあります。SQLステートメントがアプリケーションによってどのように使用されているかをよく把握してください。アプリケーション・ロジックを手直しすることによって、パフォーマンスが向上する場合があります。

 また、そのSQLステートメントについて1つのパッケージだけが作成されるように、パラメータ・マーカーの使用を検討するとよいでしょう。パラメータ・マーカーは、(アクセス・プランが生成されるときに)動的に準備されるステートメントの中でプレイスホルダとして使われます。ステートメントの実行時に、パラメータ・マーカーに実際の値が与えられます。

 最も多く実行されているステートメントを検索するには、次のようにします。

UNIX:
grep -n " Number of executions" snap.out | grep -v "= 0" | sort -k 5,5rn | more

Windows:
findstr /C:" Number of executions" snap.out | findstr /V /C:"= 0"

次ページに続く)

       1|2 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。