IBM®
本文へジャンプ
    Japan [変更]    ご利用条件
 
 
検索範囲検索:    
    ホーム    製品    サービス & ソリューション    サポート & ダウンロード    マイアカウント    
skip to main content

developerWorks Japan  >  Information Management  >

DB2 UDB アクセス・プラン速習

第1回 資料

developerWorks

第1回記事

目次

1-1 SQLオプティマイザーの重要性
1-2 テスト表の構造と使用データ(1)
1-3 動的SQLの詳細なEXPLAINを取得する(Windows)
1-4 動的SQLの詳細なEXPLAINを取得する(UNIX)
1-5 SQLの実行時間を測定する
1-6 SQLの実行時間を測定しSNAPSHOTモニターも取得する

資料の目的

  • DB2 SQLオプティマイザーが使用する主要なアクセス・プランの挙動を理解する
  • DB2の生成するアクセス・プランを調査する際の着眼点を習得する
  • 照会最適化クラスと適用される最適化技術を知る

お断り

  • 当資料の1-5はDB2 V7.2 FP5 Solaris、1-6はDB2 V8.1 FP1 Windowsで取得した出力を使用しています。出力内容や応答時間は実行環境により異なります、傾向や特徴の違いを把握するための参考資料としてごらんください。

1-1 SQLオプティマイザーの重要性

オプティマイザーの重要性

  • SQLの複雑さに応じた最適化の必要性
    • OLTP -> DSS -> OLAP / ROLAP
  • 複雑化するシステム
    • 1GB -> 100 GB -> 1TB -> 10TB
  • クエリー生成ツールが自動生成たり、初心者が作成したSQLの最適化
    • 人手の加えられないSQLの最適化の必要性
  • 増加するシステム数、データベースエキスパートの不足
    • 強力な自己最適化機能の必要性

1-2 テスト表の構造と使用データ(1)

ケース1−7

  • テスト表T1 INTEGER 6列
    • 1列 1 − 100万   連番 primary key
    • 2列 0 − 10万     乱数 index2
    • 3列 0 − 1万       乱数 index3
    • 4列 0 − 100万   乱数
    • 5列 0 − 10万     乱数
    • 6列 0 − 1万       乱数
  • テスト表T2も同様
テストケース9−10
  • 同様の考え方で10万行を均一に作成

テスト表の構造と使用データ
テスト表の構造と使用データ

1-3 動的SQLの詳細なEXPLAINを取得する(Windows)

EXPLAIN表とdb2exfmtフォーマットユーティリティーを使う
  • 操作の前提
    • 1ユーザーでEXPLAIN表スキーマを占有して操作(インスタンスオーナーなど)
  • explain表の準備
    • sqllib\misc\EXPLAIN.DDL でEXPLAIN表を作成
  • 調査SQL文の準備
    • 調査したいSQL文1つを;区切りでファイルに保存(例 .sql) −パラメーター・マーカー付きSQLも可能
  • explain取得用スクリプトの作成

Windows インスタンスオーナーでのスクリプト例
Windows インスタンスオーナーでのスクリプト例

1-4 動的SQLの詳細なEXPLAINを取得する(UNIX)

EXPLAIN表とdb2exfmtフォーマットユーティリティーを使う
  • 操作の前提
    • 1ユーザーでEXPLAIN表スキーマを占有して操作 (インスタンスオーナーなど)
  • explain表の準備
    • sqllib/misc/EXPLAIN.DDL でEXPLAIN表を作成
  • 調査SQL文の準備
    • 調査したいSQL文1つを;区切りでファイルに保存(例 .sql) −パラメーター・マーカー付きSQLも可能
  • explain取得用スクリプトの作成

UNIXインスタンスオーナーでのスクリプト例


1-5 SQLの実行時間を測定する

db2batchユーティリティーを使用する
  • Prepare時間は含まれない
  • 分離レベルRRで測定される
  • 便利な追加オプション
    • fetch結果をリストに出さない −-o r 0
    • fetchを 1行だけに限定 −-o f 1
    • 照会最適化クラス1 を使う −-o o 1

Windowsインスタンスオーナーでのスクリプト例
Windowsインスタンスオーナーでのスクリプト例

(UNIXでは %1 の代わりに$1 を使用)

1-6 SQLの実行時間を測定しSNAPSHOTモニターも取得する

db2batchユーティリティーを使用する
  • -o p 3オプションを使う


(UNIXでは %1 の代わりに$1 を使用)

explain表書き出しも同時に行う場合
  • -o e 2 オプションを追加する


(UNIXでは %1 の代わりに$1 を使用)

    日本IBMについて プライバシー お問い合わせ