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