DB2逆引きリファレンス目次】 【DB2逆引きリファレンス目次#チューニング編】 【DB2逆引きリファレンス目次#アクセスプラン

前提

解説

動的SQLのアクセスプランの実行時の詳細情報は、EXPLAIN表に記録することができます。 EXPLAIN表に記録した情報は、db2exfmtコマンドにより確認することができます。

db2exfmt -d データベース名 [-eスキーマ名] [-o 出力ファイル名 ] [-t]
  [-u ユーザー名 パスワード ] -1

-d データベース名
: EXPLAIN表が格納されているデータベースの名前を指定します。

-eスキーマ名
: EXPLAIN表のスキーマ名を指定します。デフォルトのスキーマにEXPLAIN表が作成されている場合は指定する必要はありません。

-o 出力ファイル名
: db2exfmtコマンドの出力を保存するためのファイル名を指定します。

-t
: db2exfmtコマンドの出力を標準出力に出力します。

-u ユーザー名 パスワード
: データベースの接続にユーザー名とパスワードが必要であれば指定します。

-1
: EXPLAIN表内に記録されたアクセスプランの実行情報のうち、もっとも新しいものの情報を出力することを指定します。

手順

  1. 特殊レジスタCURRENT EXPLAIN MODEの値をYESに変更し、EXPLAIN情報を取得するモードに変更します。
    db2 ==> SET CURRENT EXPLAIN MODE YES↓

  2. EXPLAIN情報を取得したいSQLを実行します。 以下はemployee表からの全権SELECTを実行している例です。
    db2 ==> SELECT * FROM employee↓

  3. 取得したEXPLAIN情報を整形して出力します。 以下はデータベースの名前がsampleである場合の例です。
    $ db2exfmt -d sample -t -1↓

    ******************** EXPLAIN INSTANCE ********************

    DB2_VERSION: 08.01.0
    SOURCE_NAME: SYSSH200
    SOURCE_SCHEMA: NULLID
    SOURCE_VERSION:
    EXPLAIN_TIME: 2003-11-24-01.38.11.194000
    EXPLAIN_REQUESTER: TA

    Database Context:
    ----------------
    Parallelism: None
    CPU Speed: 4.251098e-007
    Comm Speed: 1
    Buffer Pool size: 250
    Sort Heap size: 256

    (省略)

    Objects Used in Access Plan:
    ---------------------------

    Schema: TA
    Name: EMPLOYEE
    Type: Table

    (省略)

    出力に含まれる各セクションには、それぞれ以下のような情報が記載されています。

    Database Context
    : Explain情報が取得された時点でのデータベースの構成情報。

    Package Context
    : 動的/静的SQLの種別や分離レベルなどに関するパッケージの情報。

    Original Statement
    : 実行したSQL文。

    Optimized Statement
    : オプティマイザーによりリライトされたSQL文。

    Access Plan
    : アクセスプラン。

    Objects Used in Access Plan
    : アクセスプランで利用されている表などのオブジェクトの一覧。

注意

参照