本連載はDB2 UDB V8のシステム管理者、およびアプリケーション開発者のために、パフォーマンス・チューニングに必要な技法を紹介する。記事の原文はIBM developerWorksで2004年4月に公開された「Best practices for tuning DB2 UDB v8.1 and its databases」で、DB2の設計、配置、構成、SQL、運用管理、モニタリングといった内容を、実践的な操作を中心に解説している。想定する読者はDB2データベース管理の中級レベルのスキルを持っているユーザーである。スクリーン・ショットなど一部のコンテンツは、日本語版のものに差し替えている。(編集局)
1つまたは複数のクエリに特定の問題がある場合は、そのワークロードをDB2の「設計アドバイザー」(db2advis)に入力して、効率的な索引を推奨させることができます。SQLが不明な場合は、以下の作業で対応します。
ステートメント・イベント・モニタの使用方法については、このセクションの中で後ほど説明します。
「設計アドバイザー」は、「DB2コントロール・センター」またはコマンド行プロセッサ(CLP)から使用できます。この両方のインターフェイスについて、次に説明します。
「DB2コントロール・センター」の中でオブジェクト・ツリーを展開して、希望するデータベースを探します。データベースが見つかったら、そのデータベース名を右クリックして、ポップアップ・メニューから「設計アドバイザー...」を選択します。これで、ワークロードの作成が可能になります。ワークロードを作成するには、最近実行したSQLを参照するか、パッケージ内を参照するか、または手動でSQLステートメントを追加します。
CLPを使用する場合は、画面に表示される出力結果をスクリプトとして収集し、それを実行できます。よく使われる例を次に示します。
「sample」データベースで、特定のSQLステートメントに対して索引を推奨させるには、次のようにします。ここでは、索引の識別に1分間の制限を設けています。
db2advis -d sample -s |
(注: 記号は表示の都合で折り返していることを表します) |
複数のステートメントに対して索引を推奨させるには、次のようなテキスト・ファイルを作成します。
db2advis -d sample -s "--#SET FREQUENCY 10 |
ここで「FREQUENCY」(頻度)は、それぞれのSQLステートメントが、入力ファイル内のほかのSQLステートメントと比べて実行される回数の重み付けを表します。結果を生成させるには、次のようにします。
db2advis -d dbname -i sqlstmts_file > recindexes.out
|
(注:赤字は各自の環境に置き換えてください) |
出力結果は画面に表示されるので、リダイレクトを使用して、索引定義をファイルに取り込みます。これは、後でDB2スクリプトとして実行できます。
もう1つの方法として、スナップショットから「設計アドバイザー」に動的SQLをパイピングすることもできます。
get snapshot for dynamic SQL on dbname write to file |
(注:赤字は各自の環境に置き換えてください) |
これにより、スナップショットが内部フォーマットのファイルとして保存されます。次に、その結果を「設計アドバイザー」の表に挿入します。以下のSQLを使用します。
insert into advise_workload(select 'myworkload',
0, |
(注: 記号は表示の都合で折り返していることを表します。赤字は各自の環境に置き換えてください) |
ワークロード内の各SQLステートメントのデフォルトのFREQUENCYは「1」で、デフォルトのIMPORTANCE(重要度)も同じく「1」です。generate_unique()関数は、各ステートメントに固有IDを割り当てます。ユーザーは、これらの列をより意味のある値に更新することができます。索引を生成するには次のようにします。
db2advis -d dbname -w myworkload |
(注:赤字は各自の環境に置き換えてください) |
「設計アドバイザー」の実行が終わると、advise_index表にデータが追加されます。この表に対して以下の照会を実行することにより、「設計アドバイザー」の推奨事項をすべてリストすることができます。
SELECT CAST(CREATION_TEXT as CHAR(200)) FROM ADVISE_INDEX |
(次ページに続く)
Copyright © ITmedia, Inc. All Rights Reserved.