IBM Support

[Db2] Explain 表の作成方法と削除方法

Question & Answer


Question

アクセス・プランを取得する際に利用する Explain 表の作成方法と削除方法を教えて下さい。

Answer

Explain 表は、Explain 機能が活動化された時点のアクセス・プランをキャプチャーします。 Explain 表は、Explain 機能を呼び出す前に作成しておく必要があります。

【V9.1 以前の作成方法】
Unix/Linux 環境では $INSTHOME/sqllib/misc/EXPLAIN.DDL に、Windows 環境では %DB2PATH%\MISC\EXPLAIN.DDL に EXPLAIN 表の DDL が保管されています。
DDL では表のスキーマ名や表スペースは指定されていないため、表は CURRENT SCHEMA のスキーマ名で、ユーザーに USE 特権が付与されている表スペース内に作成されます。
以下のように DDL を実行してください。
  • [Unix/Linux 環境の場合]
    $ db2 connect to データベース名
    $ db2 -tf ~/sqllib/misc/EXPLAIN.DDL
  • [Windows 環境の場合]
    db2 connect to [データベース名]
    db2 -tf "%DB2PATH%\MISC\EXPLAIN.DDL"
【V9.1 以前の削除方法】
EXPLAIN.DDL の中で CREATE されているオブジェクトを確認し DROP してください。
オブジェクトの中には依存関係が設定されているものがあるため、CREATE の時と逆の順番で削除してください。

【V9.5 以降の作成方法】
V9.5 以降では上記の EXPLAIN.DDL を利用する以外に、SYSINSTALLOBJECTS プロシージャーを利用して EXPLAIN 表を作成できます。
プロシージャーの第 3 引数は表を作成する表スペース名を、第 4 引数には表のスキーマ名を指定してください。
それぞれ NULL もしくは空文字の場合、SYSTOOLSPACE 表スペースに SYSTOOLS スキーマで作成されます。
SYSTOOLSPACE 表スペースがまだ存在しない場合、自動で作成されます。

以下の実行例では、SYSTOOLSPACE 表スペースに、接続ユーザー名のスキーマで Explain 表を作成します。
$ db2 connect to データベース名
$ db2 "call SYSPROC.SYSINSTALLOBJECTS( 'EXPLAIN', 'C' , '', CURRENT USER )"
【V9.5 以降の削除方法】
SYSINSTALLOBJECTS プロシージャーを利用して、Explain 表を削除できます。
第 4 引数には DROP する表のスキーマ名を指定してください。
NULL もしくは空文字の場合、SYSTOOLS スキーマの表が削除されます。

以下の実行例では、接続ユーザー名のスキーマの Explain 表を削除します。
$ db2 connect to [データベース名]
$ db2 "call SYSPROC.SYSINSTALLOBJECTS( 'EXPLAIN', 'D', '', CURRENT USER )"
運用上の考慮点
  • Explain 表のメンテナンス
    Explain 表にはカスケード削除が指定されているため、EXPLAIN_INSTANCE 表の行を削除すると、他の Explain 表に格納されている関連する Explain 情報が削除されます。
    このため、保管した Explain 情報をすべてクリアしたい場合は、EXPLAIN_INSTANCE の全行を削除してください。

    以下の実行例では、接続ユーザー名のスキーマの Explain 情報をクリアします。
    $ db2 connect to データベース名
    $ db2 delete from EXPLAIN_INSTANCE

    なお、大量の Explain 情報が保管されており、削除がログフルで失敗する場合は以下の FAQ を参照してください。
    NOT LOGGED INITIALLY を指定する場合、EXPLAIN_INSTANCE 表だけでなく、EXPLAIN_* 表すべてに指定する必要があります。
    [Db2] 大量の行を削除する時のログ量を減らす方法
  • Explain 表のアップグレード
    Db2 のバージョンごとに Explain 表の定義は変更されることがあります。
    以前のバージョンの Explain 表の内容をそのまま使いたい場合は、db2exmig コマンドを実行して既存の Explain 表の定義を変更する必要があります。
    Explain 表のアップグレード
[Db2] SQL の実行計画 (Explain) を取得する方法
Explain 表および Explain 情報の編成
SYSINSTALLOBJECTS プロシージャー

お問合せ先
技術的な内容に関して、パスポート・アドバンテージの契約のもと Db2 テクニカル・サポートへお問い合わせください。
Db2 テクニカル・サポート

[{"Type":"MASTER","Line of Business":{"code":"LOB10","label":"Data and AI"},"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SSEPGG","label":"Db2 for Linux, UNIX and Windows"},"ARM Category":[{"code":"a8m500000008PkcAAE","label":"Compiler"},{"code":"a8m500000008PkyAAE","label":"Compiler-\u003EOptimization db2explain db2advis"}],"ARM Case Number":"","Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"All Versions"}]

Document Information

Modified date:
24 August 2023

UID

swg21596631