本連載はDB2 UDB V8のシステム管理者、およびアプリケーション開発者のために、パフォーマンス・チューニングに必要な技法を紹介する。記事の原文はIBM developerWorksで2004年4月に公開された「Best practices for tuning DB2 UDB v8.1 and its databases」で、DB2の設計、配置、構成、SQL、運用管理、モニタリングといった内容を、実践的な操作を中心に解説している。想定する読者はDB2データベース管理の中級レベルのスキルを持っているユーザーである。スクリーン・ショットなど一部のコンテンツは、日本語版のものに差し替えている。(編集局)
スナップショット・モニタを使用すると、ある一定の期間におけるデータベースの動作を識別できます。例えば、メモリがどのように使用されているか、ロックがどのように獲得されているか、といった情報を得ることができます。スナップショット・モニタは、構成を微調整したり、問題(例えばステートメントの実行時間が長い)を識別したりするための手法として利用されます。ただし、すでに「構成アドバイザー」を使用している場合は、パフォーマンスを大きく改善することは難しいでしょう。
分析すべきデータを収集する最も簡単な方法は、スクリプトを使用して、アプリケーションを実行しながらスナップショット・モニタを実行することです。リスト1またはリスト2のようなスクリプトを使用すると、分析に必要な情報を収集できます。最初は、これらのスクリプトを60秒間ずつ数回実行します。このようにすると、アプリケーション動作の適切なサンプルを得ることができ、扱う情報が多くなりすぎずに済みます。
この2つのスクリプトは動作がわずかに異なりますが、どちらの場合も希望するスナップショット出力が得られます。
後続のセクションでは、DBMおよびデータベース構成パラメータの最適な設定を見つけるための手段として、スナップショット・モニタを頻繁に使用します。
リスト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: |
(次ページに続く)
Copyright © ITmedia, Inc. All Rights Reserved.