0 / 0
Torna alla versione inglese della documentazione
Procedura memorizzata EXPLAIN_FORMAT in Data Virtualization
Ultimo aggiornamento: 26 nov 2024
Procedura memorizzata EXPLAIN_FORMAT in Data Virtualization

È possibile eseguire la stored procedure 'EXPLAIN_FORMAT in Data Virtualization per eseguire il comando 'db2exfmt. È possibile specificare la formattazione delle informazioni EXPLAIN generate quando si creano piani di accesso query e si scarica l'output EXPLAIN generato nei file di testo.

La procedura EXPLAIN_FORMAT formatta il contenuto delle tabella EXPLAIN in base ai parametri specificati e aggiorna i dati formattati nella tabella EXPLAIN_STATEMENT sotto la colonna EXPLAIN_FORMAT_TEXT. La procedura restituisce anche un'istruzione SQL come parametro OUTPUT, che può essere utilizzato per recuperare i dati formattati dalla tabella EXPLAIN_STATEMENT. Per ulteriori informazioni sulla tabella EXPLAIN , consultare la tabella EXPLAIN_STATEMENT nella documentazione di Db2® .

La procedura non emette un'istruzione COMMIT dopo l'aggiornamento delle tabelle EXPLAIN . Il chiamante della procedura deve emettere un'istruzione COMMIT .

Lo schema è SYSPROC.

Autorizzazioni

Per eseguire la routine è richiesta una delle seguenti autorizzazioni o privilegi:
  • Privilegio EXECUTE sulla routine
  • Autorizzazione DATAACCESS
  • Autorizzazione DBADM
  • Autorizzazione SQLADM
Inoltre, i privilegi detenuti dall'ID autorizzazione della sessione, inclusi i privilegi concessi ai gruppi, devono includere almeno una delle seguenti opzioni:
  • Privilegio INSERT sulle tabelle explain nello schema specificato
  • Privilegio CONTROL sulle tabelle explain nello schema specificato
  • Autorizzazione DATAACCESS
  • Privilegio PUBLIC predefinito
  • ESECUZIONE

Sintassi

---
[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 --'
	                                                                                                                                      
                                                                              
        ---

Parametri di procedura

schema_spiegazione
Un argomento di input o di output di tipo VARCHAR (128) che specifica lo schema che contiene le tabelle explain in cui devono essere scritte le informazioni EXPLAIN. Se viene specificata una stringa vuota o NULL, viene eseguita una ricerca delle tabelle explain nello schema predefinito dell'ID autorizzazione corrente e quindi dello schema SYSTOOLS. Se le tabelle Explain non vengono trovate nello schema specificato, viene restituito SQL0219N . Se il chiamante non dispone del privilegio INSERT sulle tabelle explain nello schema specificato, viene restituito SQL0551N .
esplora richiedente
Un argomento di immissione o emissione di tipo VARCHAR (128) che specifica l'ID di autorizzazione dell'iniziatore di questa richiesta explain. Se viene specificata una stringa vuota o NULL, viene eseguita una ricerca per le tabelle explain nella sessione corrente.
EXPLAIN_TIME
Un argomento di input o di output di tipo TIMESTAMP che contiene l'ora di avvio per la richiesta Explain. Se viene specificato NULL, ottenere l'ultima richiesta explain.
NOME_ORIGINE
Un argomento di input o di output di tipo VARCHAR (128) che specifica il nome pacchetto (SOURCE_NAME) o il nome oggetto per la richiesta explain. Il pacchetto viene assunto se l'opzione object_type non è specificata.
schema_origine
Un argomento di input o di output di tipo VARCHAR (128) che specifica lo schema Package (SOURCE_SCHEMA) della richiesta di package. Se non viene specificato uno schema di package, questa opzione è impostata su '%'. Se il parametro object_module viene fornito per la procedura o la funzione, questa opzione corrisponde allo schema del modulo. Se il tipo di oggetto è una procedura, una funzione o un trigger, questo è lo schema dell'oggetto associato. Se il tipo di oggetto non è una procedura, una funzione o un trigger e il parametro object_module non viene fornito, lo schema viene impostato sul valore del registro speciale CURRENT SCHEMA.
versione_origine
Un argomento di input o output di tipo VARCHAR (128) che specifica la versione del pacchetto (SOURCE_VERSION) della richiesta explain. Il valore predefinito è%.
numero_sezione
Un argomento di input o di output di tipo INTEGER che contiene il numero di sezione nell'origine. Per richiedere tutte le sezioni, specificare zero.
tipo_oggetto
Tipo dell'oggetto specificato. Il tipo predefinito è package.
  • PK: Nome pacchetto
  • P: Nome procedura SQL
  • SP: un nome di procedura SQL specifico
  • F: Funzione compilata
  • SF: un nome funzione compilato specifico
  • T: Trigger compilato
moduco_oggetti
Nome modulo della routine quando l'opzione object_type è P, SP, F o SF. I nomi modulo vengono ignorati se il parametro object_type non è specificato.
indicatori di formato
Un argomento di input di tipo VARCHAR (128) che contiene più indicatori che possono essere combinati insieme come stringa. Se viene specificata una stringa vuota o NULL, le opzioni di formattazione vengono determinate automaticamente.
  • O: Riepilogo operatore
  • Y: Forzatura della formattazione dell'istruzione originale anche se la colonna EXPLAIN_STATEMENT.EXPLAIN_TEXT contiene la formattazione. Il comportamento predefinito è quello di rilevare automaticamente se l'istruzione richiede la formattazione e utilizzare la formattazione originale quando esiste.
  • C: Utilizzare una modalità più compatta durante la formattazione di istruzioni e predicati. Il valore predefinito è una modalità espansa. Se Y non viene specificato, C diventa effettivo solo se il rilevamento automatico determina che l'istruzione richiede la formattazione.
indicatore_grafico
Un argomento di input di tipo VARCHAR (128) che contiene più indicatori di grafico che possono essere combinati insieme come stringa. Se viene specificata una stringa vuota o NULL, l'opzione predefinita è 'TIC '.
  • Disattivare le opzioni (il valore predefinito è di attivarle). Se vuoto, viene generato un grafico, seguito dalle informazioni formattate per tutte le tabelle. In caso contrario, è possibile specificare qualsiasi combinazione dei seguenti valori validi:
    • O: Genera solo un grafico. Non formattare il contenuto della tabella.
    • T: include il costo totale sotto ogni operatore nel grafico.
    • F: Includere il primo costo di tupla nel grafico.
    • I: Includere il costo I/O sotto ogni operatore nel grafico.
    • C: include la cardinalità di output prevista (numero di tuple) di ogni operatore nel grafico.
    • Nota: è consentita qualsiasi combinazione di queste opzioni, tranne F e T, che si escludono a vicenda.
sql di estrazione
Un argomento di output di tipo VARCHAR (2048) che contiene l'istruzione SQL che è possibile utilizzare per estrarre i dati formattati rispetto a EXPLAIN_STATEMENT.

Note d'utilizzo

I parametri explain_schema, explain_requester, explain_time, source_schema, source_name, source_version, section_number comprendono la chiave utilizzata per ricercare le informazioni per le sezioni nelle tabelle explain. Se sono stati forniti input NULL, vuoti o con caratteri jolly per questi parametri, il valore effettivo utilizzato verrà aggiornato nel parametro al ritorno.

La procedura esegue le seguenti funzioni:
  • Utilizzare i parametri passati per formattare le informazioni EXPLAIN richiamate dalle tabelle explain.
  • Aggiornare i dati formattati nella tabella EXPLAIN_STATEMENT sotto la colonna EXPLAIN_FORMAT_TEXT.
  • Restituisce i valori effettivi utilizzati per tutti i parametri INOUT (ad esempio explain_schema, explain_requester, explain_time, source_schema, source_name, source_version, section_number).
  • Se la procedura ha esito positivo, il parametro OUT EXTRACT_SQL viene popolato con un'istruzione SQL di esempio che può essere utilizzata per richiamare i dati formattati dalla tabella EXPLAIN_STATEMENT. Altrimenti, viene popolato con un messaggio di errore.

Esempio

  1. Creare le tabelle explain e raccogliere i dati explain per la query o per le query di interesse utilizzando i metodi documentati in https://www.ibm.com/docs/en/db2/11.5?topic=optimization-explain-facility.
  2. Richiamare la procedura memorizzata EXPLAIN_FORMAT , come segue:
    Call explain_format('DB2INST1', 'DB2INST1', '2022-11-08-02.28.42.810882', 'SQLC2P31', 'NULLID', '', 0, '', '', 'T', ?)

    Utilizzare i parametri della tabella seguente:

    Tipo Elenco parametri Valore di esempio nell'esempio precedente
    INOUT Schema_esplicativa DB2INST1
    INOUT Richiesto_explain DB2INST1
    INOUT EXPLAIN_TIME 2022-11-08-02.28.42.810882
    INOUT NOME_ORIGINE SQLC2P31
    INOUT Schema_origine NULLID
    INOUT Versione_origine  
    INOUT Numero_sezione 0
    IN tipo_oggetto  
    IN Modulo oggetto  
    IN Indicatori grafici T
    OUT Estrai SQL ?
  3. Estrarre i dati formattati dalla tabella EXPLAIN_STATEMENT eseguendo la seguente istruzione SQL dal parametro extract_sql OUT:
    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;
    La query mostra il piano explain formattato simile al seguente esempio:
    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
    SPIEGA ISTANZA:
    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
    
    

Ricerca e risposta AI generativa
Queste risposte sono generate da un modello di lingua di grandi dimensioni in watsonx.ai basato sul contenuto della documentazione del prodotto. Ulteriori informazioni