0 / 0
資料の 英語版 に戻る
Data Virtualization化のEXPLAIN_FORMATストアドプロシージャ
最終更新: 2024年11月26日
Data Virtualization化のEXPLAIN_FORMATストアドプロシージャ

Data Virtualizationで'EXPLAIN_FORMATストアドプロシージャを実行し、'db2exfmtコマンドを実行することができる。 照会アクセス・プランの作成時に生成される EXPLAIN 情報のフォーマットを指定し、生成された EXPLAIN 出力をテキスト・ファイルにダウンロードすることができます。

EXPLAIN_FORMAT プロシージャーは、指定されたパラメーターに基づいて EXPLAIN 表の内容をフォーマットし、EXPLAIN_STATEMENT 表の EXPLAIN_FORMAT_TEXT 列の下にあるフォーマット済みデータを更新します。 また、このプロシージャーは、SQL ステートメントを OUTPUT パラメーターとして返します。このパラメーターを使用して、EXPLAIN_STATEMENT 表から定様式データを取り出すことができます。 EXPLAIN 表について詳しくは、 Db2® 資料の EXPLAIN_STATEMENT 表 を参照してください。

プロシージャーは、 EXPLAIN 表の更新後に COMMIT ステートメントを発行しません。 プロシージャーの呼び出し側は、 COMMIT ステートメントを発行する必要があります。

スキーマは SYSPROCです。

権限

ルーチンを実行するには、以下のいずれかの権限または特権が必要です。
  • ルーチンに対する EXECUTE 特権
  • DATAACCESS 権限
  • DBADM 権限
  • SQLADM 権限
さらに、セッションの許可 ID によって保持される特権 (グループに付与される特権を含む) には、以下のオプションの少なくとも 1 つが含まれている必要があります。
  • 指定されたスキーマ内の Explain 表に対する INSERT 特権
  • 指定されたスキーマ内の Explain 表に対する CONTROL 特権
  • DATAACCESS 権限
  • デフォルトの PUBLIC 特権
  • 実行

構文

---
[source,c++]

>>--EXPLAIN_FORMAT----(-- explain_schema--  , --explain_requester--, --explain_time-- , --------------->
>-- ------------ source_name-------  , ---------source_schema--------  , --------source_version-- , --->
>-- ------------ object_type-------  , ----------------------------object_module----------------------->
											       v--------|	
>-- --section_number-- , ----format_flags------+-----+------- , ---graph_flags-----+---+-------+--------+-----<>
	                                       '--O--'                             '-x-'       '--- O --'
	                                       '--Y--'                                         '--- I --'
	                                       '--C--'                                         '--- C --'
	                                                                                       '--- T --'
	                                                                                       '--- F --'
	                                                                                                                                      
                                                                              
        ---

プロシージャー・パラメーター

説明スキーマ
EXPLAIN 情報の書き込み先の Explain 表を含むスキーマを指定する、タイプ VARCHAR (128) の入力または出力引数。 空ストリングまたは NULL が指定された場合、現行の許可 ID のデフォルト・スキーマの下で Explain 表が検索され、次に SYSTOOLS スキーマが検索されます。 指定されたスキーマの下に Explain 表が見つからない場合は、 SQL0219N が戻されます。 指定されたスキーマ内の Explain 表に対する INSERT 特権が呼び出し元にない場合は、 SQL0551N が戻されます。
EXPLAIN_REQUESTER
この Explain 要求のイニシエーターの許可 ID を指定する、タイプ VARCHAR (128) の入力または出力引数。 空ストリングまたは NULL が指定された場合、現行セッションの下で Explain 表の検索が行われます。
EXPLAIN_TIME
Explain 要求の開始時刻を格納する、タイプ TIMESTAMP の入力または出力引数。 NULL が指定されている場合は、最新の Explain 要求を取得してください。
SOURCE_NAME
Explain 要求のパッケージ名 (SOURCE_NAME) またはオブジェクト名を指定する、タイプ VARCHAR (128) の入力または出力引数。 object_type オプションが指定されていない場合は、パッケージが想定されます。
SOURCE_SCHEMA
パッケージ要求のパッケージ・スキーマ (SOURCE_SCHEMA) を指定する、タイプ VARCHAR (128) の入力または出力引数。 パッケージ・スキーマが指定されない場合、このオプションは「%」に設定されます。 プロシージャーまたは関数に object_module パラメーターが指定されている場合、このオプションはモジュール・スキーマに対応します。 オブジェクト・タイプがプロシージャー、関数、またはトリガーの場合、これは関連オブジェクトのスキーマです。 オブジェクト・タイプがプロシージャー、関数、またはトリガーではなく、object_module パラメーターが指定されていない場合、スキーマは CURRENT SCHEMA 特殊レジスターの値に設定されます。
SOURCE_VERSION
Explain 要求のパッケージ・バージョン (SOURCE_VERSION) を指定する、タイプ VARCHAR (128) の入力または出力引数。 デフォルト値は% です。
section_number
ソース内のセクション番号を含む、タイプ INTEGER の入力または出力引数。 すべてのセクションを要求するには、ゼロを指定します。
オブジェクト・タイプ
指定されたオブジェクトのタイプ。 デフォルト・タイプはパッケージです。
  • PK: パッケージ名
  • P: SQL プロシージャー名
  • SP: 特定の SQL プロシージャー名
  • F: コンパイル済み関数
  • SF: 特定のコンパイル済み関数名
  • T: コンパイル済みトリガー
object_module
object_type オプションが P、SP、F、または SF の場合のルーチンのモジュール名。 object_type パラメーターが指定されていない場合、モジュール名は無視されます。
フォーマット・フラグ
1 つのストリングとして結合できる複数のフラグを含む、タイプ VARCHAR (128) の入力引数。 空ストリングまたは NULL が指定された場合、フォーマット・オプションは自動的に決定されます。
  • O: オペレーターの要約
  • Y: 列 EXPLAIN_STATEMENT.EXPLAIN_TEXT にフォーマット設定が含まれています。 デフォルトの動作は、ステートメントのフォーマット設定が必要かどうかを自動的に検出し、元のフォーマット設定が存在するのであれば、それを使用します。
  • C: ステートメントおよび述部のフォーマット設定時に、よりコンパクトなモードを使用します。 デフォルトは拡張モードです。 Y を指定しないと、自動検出によってステートメントのフォーマットが必要であると判断された場合にのみ、C が有効になります。
グラフ・フラグ
ストリングとして結合できる複数のグラフ・フラグを含む、タイプ VARCHAR (128) の入力引数。 空ストリングまたは NULL が指定されている場合、「TIC」がデフォルト・オプションです。
  • オプションを OFF にします (デフォルトは ON です)。 空の場合は、グラフが生成され、その後にすべての表のフォーマット設定された情報が続きます。 それ以外の場合は、以下の有効な値を任意に組み合わせて指定できます。
    • O: グラフのみを生成します。 表の内容はフォーマットしません。
    • T: グラフ内の各演算子の下に合計コストを含めます。
    • F: 最初のタプル・コストをグラフに含めます。
    • I: グラフ内の各オペレーターの下に入出力コストを含めます。
    • C: 各演算子の予期される出力カーディナリティー (タプルの数) をグラフに含めます。
    • 注: これらのオプションの任意の組み合わせが許可されます。ただし、F と T は相互に排他的です。
extract_sql (抽出 SQL)
フォーマット済みデータを EXPLAIN_STATEMENT に対して抽出するために使用できる SQL ステートメントを含む、タイプ VARCHAR (2048) の出力引数。

使用上の注意

パラメーター explain_schema、explain_requester、explain_time、source_schema、source_name、source_version、section_number は、Explain 表のセクションの情報を検索するために使用されるキーを構成します。 これらのパラメーターに NULL、空、またはワイルドカード入力が指定されている場合、使用される実際の値は戻り時にパラメーター内で更新されます。

このプロシージャーは、以下の機能を実行します。
  • 渡されたパラメーターを使用して、Explain 表から取得した EXPLAIN 情報をフォーマットします。
  • 列 EXPLAIN_FORMAT_TEXT の下の EXPLAIN_STATEMENT 表のフォーマット済みデータを更新します。
  • すべての INOUT パラメーター (explain_schema、explain_requester、explain_time、source_schema、source_name、source_version、section_number) に使用される実際の値を返します。
  • プロシージャーが正常に実行されると、OUT パラメーター EXTRACT_SQL に、EXPLAIN_STATEMENT 表からフォーマット済みデータを取得するために使用できる SQL ステートメントの例が取り込まれます。 それ以外の場合は、エラー・メッセージが表示されます。

  1. https://www.ibm.com/docs/en/db2/11.5?topic=optimization-explain-facility」に記載されている方法を使用して、Explain 表を作成し、関心のある照会の Explain データを収集します。
  2. 以下のようにして、 EXPLAIN_FORMAT ストアード・プロシージャーを呼び出します。
    Call explain_format('DB2INST1', 'DB2INST1', '2022-11-08-02.28.42.810882', 'SQLC2P31', 'NULLID', '', 0, '', '', 'T', ?)

    以下の表のパラメーターを使用します。

    タイプ パラメーター・リスト 上記の例のサンプル値
    INOUT 説明スキーマ (Explain_Schema) DB2INST1
    INOUT EXPLAIN_REQUESTER DB2INST1
    INOUT EXPLAIN_TIME 2022-11-08-02.28.42.810882
    INOUT SOURCE_NAME SQLC2P31
    INOUT SOURCE_SCHEMA NULLID
    INOUT SOURCE_VERSION  
    INOUT SECTION_NUMBER 0
    IN OBJECT_TYPE  
    IN object_module  
    IN グラフ・フラグ T
    OUT SQL の抽出 ?
  3. extract_sql OUT パラメーターから以下の SQL ステートメントを実行して、フォーマット済みデータを EXPLAIN_STATEMENT 表から抽出します。
    select EXPLAIN_FORMAT_TEXT from "DB2INST1".EXPLAIN_STATEMENT where EXPLAIN_REQUESTER='DB2INST1' and
    EXPLAIN_TIME='2022-11-08-02.28.42.810882' and
    SOURCE_NAME='SQLC2P31' and
    SOURCE_SCHEMA='NULLID' and
    SOURCE_VERSION='' and
    SECTION_NUMBER=0 and
    EXPLAIN_LEVEL='O' FOR READ ONLY;
    この照会では、以下の例のようなフォーマット済み Explain プランが表示されます。
    DB2 Universal Database Version 11.5, 5622-044 (c) Copyright IBM Corp. 1991, 2019
    Licensed Material - Program Property of IBM
    IBM DATABASE 2 Explain Table Format Tool
    Explain インスタンス:
    DB2_VERSION:       11.05.9
    FORMATTED ON DB:   SAURABH
    SOURCE_NAME:       SQLC2P31
    SOURCE_SCHEMA:     NULLID
    SOURCE_VERSION:
    EXPLAIN_TIME:      2022-11-08-02.28.42.810882
    EXPLAIN_REQUESTER: DB2INST1
    Database Context:
    ----------------
            Parallelism:          None
            CPU Speed:            4.000000e-05
            Comm Speed:           0
            Buffer Pool size:     697394
            Sort Heap size:       3090
            Database Heap size:   5099
            Lock List size:       106213
            Maximum Lock List:    98
            Average Applications: 1
            Locks Available:      3330839
    Package Context:
    ---------------
            SQL Type:           Dynamic
            Optimization Level: 5
            Blocking:           Block All Cursors
            Isolation Level:    Cursor Stability
    ---------------- STATEMENT 1  SECTION 201 ----------------
            QUERYNO:       1
            QUERYTAG:      CLP
            Statement Type:   Select
            Updatable:        No
            Deletable:        No
            Query Degree:     1
    Original Statement:
    ------------------
    select * from EXPLAIN_ACTUALS
    
    
    Optimized Statement:
    -------------------
    SELECT
    Q1.EXPLAIN_REQUESTER AS "EXPLAIN_REQUESTER",
    Q1.EXPLAIN_TIME AS "EXPLAIN_TIME",
    Q1.SOURCE_NAME AS "SOURCE_NAME",
    Q1.SOURCE_SCHEMA AS "SOURCE_SCHEMA",
    Q1.SOURCE_VERSION AS "SOURCE_VERSION",
    Q1.EXPLAIN_LEVEL AS "EXPLAIN_LEVEL",
    Q1.STMTNO AS "STMTNO",
    Q1.SECTNO AS "SECTNO",
    Q1.OPERATOR_ID AS "OPERATOR_ID",
    Q1.DBPARTITIONNUM AS "DBPARTITIONNUM",
    Q1.PREDICATE_ID AS "PREDICATE_ID",
    Q1.HOW_APPLIED AS "HOW_APPLIED",
    Q1.ACTUAL_TYPE AS "ACTUAL_TYPE",
    Q1.ACTUAL_VALUE AS "ACTUAL_VALUE"
    FROM
    DB2INST1.EXPLAIN_ACTUALS AS Q1
    
    
    Access Plan:
    -----------
            Total Cost:             9.33976
            Query Degree:           1
    
    
    Rows
        RETURN
        (   1)
        Cost
        I/O
        |
            7
        TBSCAN
        (   2)
        9.33976
            1
        |
            7
    TABLE: DB2INST1
    EXPLAIN_ACTUALS
        Q1
    Extended Diagnostic Information:
    --------------------------------
    Diagnostic Identifier:  1
    Diagnostic Details:     EXP0020W  Statistics have not been collected for
                            table "DB2INST1"."EXPLAIN_ACTUALS".  This may
                            result in a sub-optimal access plan and poor
                            performance.  Statistics should be collected for
                            this table.
    
    
    Plan Details:
    -------------
    
    1) RETURN: (Return Result)
            Cumulative Total Cost:          9.33976
            Cumulative CPU Cost:            64369
            Cumulative I/O Cost:            1
            Cumulative Re-Total Cost:       0.55104
            Cumulative Re-CPU Cost:         13776
            Cumulative Re-I/O Cost:         0
            Cumulative First Row Cost:      8.8576
            Estimated Bufferpool Buffers:   1
        Arguments:
        ---------
        BLDLEVEL: (Build level)
                DB2 v11.5.9.0 : z2201010100
        CPUCACHE: (Per-thread CPU cache size)
                16777216
        HEAPUSE : (Maximum Statement Heap Usage)
                96 Pages
        PLANID  : (Access plan identifier)
                4e88ef7dccf8bbe7
        PREPTIME: (Statement prepare time)
                        37 milliseconds
        SEMEVID : (Semantic environment identifier)
                e58edaa6cc913871
        STMTHEAP: (Statement heap size)
                8192
        STMTID  : (Normalized statement identifier)
                226ceef303eb75ac
        TENANTID: (Compiled In Tenant ID)
                0
        TENANTNM: (Compiled In Tenant Name)
                SYSTEM
    
        Input Streams:
        -------------
                2) From Operator #2
    
        Estimated number of rows:       7
        Number of columns:              14
        Subquery predicate ID:          Not Applicable
    
        Column Names:
        ------------
        +Q2.ACTUAL_VALUE+Q2.ACTUAL_TYPE+Q2.HOW_APPLIED
        +Q2.PREDICATE_ID+Q2.DBPARTITIONNUM
        +Q2.OPERATOR_ID+Q2.SECTNO+Q2.STMTNO
        +Q2.EXPLAIN_LEVEL+Q2.SOURCE_VERSION
        +Q2.SOURCE_SCHEMA+Q2.SOURCE_NAME
        +Q2.EXPLAIN_TIME+Q2.EXPLAIN_REQUESTER
    
        2) TBSCAN: (Table Scan)
                Cumulative Total Cost:          9.33976
                Cumulative CPU Cost:            64369
                Cumulative I/O Cost:            1
                Cumulative Re-Total Cost:       0.55104
                Cumulative Re-CPU Cost:         13776
                Cumulative Re-I/O Cost:         0
                Cumulative First Row Cost:      8.8576
                Estimated Bufferpool Buffers:   1
    
        Arguments:
        ---------
        CUR_COMM: (Currently Committed)
                TRUE
        LCKAVOID: (Lock Avoidance)
                TRUE
        MAXPAGES: (Maximum pages for prefetch)
                ALL
        PREFETCH: (Type of Prefetch)
                NONE
        ROWLOCK : (Row Lock intent)
                SHARE (CS/RS)
        SCANDIR : (Scan Direction)
                FORWARD
        SKIP_INS: (Skip Inserted Rows)
                TRUE
        SPEED   : (Assumed speed of scan, in sharing structures)
                FAST
        TABLOCK : (Table Lock intent)
                INTENT SHARE
        TBISOLVL: (Table access Isolation Level)
                CURSOR STABILITY
        THROTTLE: (Scan may be throttled, for scan sharing)
                TRUE
        VISIBLE : (May be included in scan sharing structures)
                TRUE
        WRAPPING: (Scan may start anywhere and wrap)
                TRUE
    
        Input Streams:
        -------------
                1) From Object DB2INST1.EXPLAIN_ACTUALS
    
        Estimated number of rows:       7
        Number of columns:              15
        Subquery predicate ID:          Not Applicable
    
        Column Names:
        ------------
        +Q1.$RID$+Q1.ACTUAL_VALUE+Q1.ACTUAL_TYPE
        +Q1.HOW_APPLIED+Q1.PREDICATE_ID
        +Q1.DBPARTITIONNUM+Q1.OPERATOR_ID+Q1.SECTNO
        +Q1.STMTNO+Q1.EXPLAIN_LEVEL+Q1.SOURCE_VERSION
        +Q1.SOURCE_SCHEMA+Q1.SOURCE_NAME
        +Q1.EXPLAIN_TIME+Q1.EXPLAIN_REQUESTER
    
        Output Streams:
        --------------
                2) To Operator #1
    
        Estimated number of rows:       7
        Number of columns:              14
        Subquery predicate ID:          Not Applicable
    
        Column Names:
        ------------
        +Q2.ACTUAL_VALUE+Q2.ACTUAL_TYPE+Q2.HOW_APPLIED
        +Q2.PREDICATE_ID+Q2.DBPARTITIONNUM
        +Q2.OPERATOR_ID+Q2.SECTNO+Q2.STMTNO
        +Q2.EXPLAIN_LEVEL+Q2.SOURCE_VERSION
        +Q2.SOURCE_SCHEMA+Q2.SOURCE_NAME
        +Q2.EXPLAIN_TIME+Q2.EXPLAIN_REQUESTER
    
        Objects Used in Access Plan:
        ---------------------------
    
        Schema:   DB2INST1
        Name:     EXPLAIN_ACTUALS
        Type:     Table
                        Time of creation:               2022-11-08-02.27.27.843587
                        Last statistics update:
                        Number of columns:              14
                        Number of rows:                 7
                        Width of rows:                  392
                        Number of buffer pool pages:    1
                        Number of data partitions:      1
                        Distinct row values:            No
                        Tablespace name:                USERSPACE1
                        Tablespace overhead:            6.725000
                        Tablespace transfer rate:       0.040000
                        Source for statistics:          Single Node
                        Prefetch page count:            32
                        Container extent page count:    32
                        Table overflow record count:    0
                        Table Active Blocks:            -1
                        Average Row Compression Ratio:  -1
                        Percentage Rows Compressed:     -1
                        Average Compressed Row Size:    -1
    
    

生成 AI の検索と回答
これらの回答は、製品資料の内容に基づいて、 watsonx.ai のラージ言語モデルによって生成されます。 詳細