0 / 0
Volver a la versión inglesa de la documentación
Procedimiento almacenado EXPLAIN_FORMAT en Data Virtualization
Última actualización: 26 nov 2024
Procedimiento almacenado EXPLAIN_FORMAT en Data Virtualization

Puede ejecutar el procedimiento almacenado ' EXPLAIN_FORMAT en Data Virtualization para ejecutar el comando ' db2exfmt. Puede especificar el formato de la información de EXPLAIN que se genera al crear planes de acceso de consulta y descargar la salida EXPLAIN generada en archivos de texto.

El procedimiento EXPLAIN_FORMAT formatea el contenido de las tablas de EXPLAIN basándose en los parámetros especificados y actualiza los datos formateados en la tabla EXPLAIN_STATEMENT bajo la columna EXPLAIN_FORMAT_TEXT. El procedimiento también devuelve una sentencia SQL como parámetro OUTPUT, que se puede utilizar para captar los datos formateados de la tabla EXPLAIN_STATEMENT. Para obtener más información sobre la tabla EXPLAIN , consulte Tabla EXPLAIN_STATEMENT en la documentación de Db2® .

El procedimiento no emite una sentencia COMMIT después de actualizar las tablas EXPLAIN . El interlocutor del procedimiento debe emitir una sentencia COMMIT .

El esquema es SYSPROC.

Autorizaciones

Se necesita una de las autorizaciones o privilegios siguientes para ejecutar la rutina:
  • Privilegio EXECUTE para la rutina
  • Autorización DATAACCESS
  • Autorización DBADM
  • Autorización SQLADM
Además, los privilegios que tiene el ID de autorización de la sesión, incluidos los privilegios que se otorgan a los grupos, deben incluir al menos una de las opciones siguientes:
  • Privilegio INSERT para las tablas de Explain en el esquema especificado
  • Privilegio CONTROL para las tablas de Explain en el esquema especificado
  • Autorización DATAACCESS
  • Privilegio PUBLIC por omisión
  • EJECUTAR

Sintaxis

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

Parámetros del procedimiento

esquema_explicación
Argumento de entrada o salida de tipo VARCHAR (128) que especifica el esquema que contiene las tablas de Explain donde se debe escribir la información de EXPLAIN. Si se especifica una serie vacía o NULL, se realiza una búsqueda de las tablas de Explain bajo el esquema por omisión del ID de autorización actual y, a continuación, el esquema SYSTOOLS. Si las tablas de Explain no se pueden encontrar bajo el esquema especificado, se devuelve SQL0219N . Si el interlocutor no tiene el privilegio INSERT en las tablas de Explain del esquema especificado, se devuelve SQL0551N .
EXPLAIN_REQUESTER
Argumento de entrada o salida de tipo VARCHAR (128) que especifica el ID de autorización del iniciador de esta petición de Explain. Si se especifica una serie vacía o NULL, se realiza una búsqueda de las tablas de Explain bajo la sesión actual.
EXPLAIN_TIME
Argumento de entrada o salida de tipo TIMESTAMP que contiene la hora de inicio de la solicitud de Explain. Si se especifica NULL, obtenga la última petición de explicación.
SOURCE_NAME
Argumento de entrada o salida de tipo VARCHAR (128) que especifica el nombre de paquete (SOURCE_NAME) o el nombre de objeto para la solicitud de explicación. Se asume el paquete si no se especifica la opción object_type.
SOURCE_SCHEMA
Argumento de entrada o salida de tipo VARCHAR (128) que especifica el esquema de paquete (SOURCE_SCHEMA) de la solicitud de paquete. Si no se especifica un esquema de paquete, esta opción se establece en '%'. Si se proporciona el parámetro object_module para el procedimiento o función, esta opción se corresponde con el esquema del módulo. Si el tipo de objeto es un procedimiento, función o desencadenante, este es el esquema del objeto asociado. Si el tipo de objeto no es un procedimiento, función o desencadenante, y no se proporciona el parámetro object_module, el esquema se establece en el valor del registro especial CURRENT SCHEMA.
SOURCE_VERSION
Argumento de entrada o salida de tipo VARCHAR (128) que especifica la versión de paquete (SOURCE_VERSION) de la petición de explicación. El valor predeterminado es%.
section_number
Argumento de entrada o salida de tipo INTEGER que contiene el número de sección en el origen. Para solicitar todas las secciones especifique cero como valor.
tipo_objeto
Tipo del objeto especificado. El valor por omisión es paquete.
  • PK: Nombre de paquete
  • P: Nombre de procedimiento SQL
  • SP: Un nombre de procedimiento SQL específico
  • F: Función compilada
  • SF: un nombre de función compilada específico
  • T: Activador compilado
OBJECT_MODULE
Nombre de módulo de la rutina cuando la opción object_type es P, SP, F o SF. Los nombres de módulo se ignoran si no se especifica el parámetro object_type.
distintivos de formato
Argumento de entrada de tipo VARCHAR (128) que contiene varios distintivos que se pueden combinar juntos como una serie. Si se especifica una serie vacía o NULL, las opciones de formato se determinan automáticamente.
  • O: Resumen de operador
  • Y: Forzar el formateo de la sentencia original incluso si la columna EXPLAIN_STATEMENT.EXPLAIN_TEXT contiene formato. El comportamiento por omisión consiste en detectar automáticamente si la sentencia requiere formato y en utilizar el formato original cuando exista.
  • C: Utilizar un modo más compacto al formatear sentencias y predicados. El valor predeterminado es una modalidad expandida. Si no se especifica Y, entonces C entra en vigor sólo si la detección automática determina que la sentencia requiere formateo.
distintivos_gráficos
Argumento de entrada de tipo VARCHAR (128) que contiene varios distintivos de gráfico que se pueden combinar juntos como una serie. Si se especifica una serie vacía o NULL, 'TIC' es la opción predeterminada.
  • Desactivar las opciones (el valor por omisión es activarlas). Si está vacío, se genera un gráfico, seguido de información formateada para todas las tablas. De lo contrario, se podrá especificar cualquier combinación de los siguientes valores válidos:
    • O: Generar sólo un gráfico. No dar formato al contenido de la tabla.
    • T: Incluya el coste total bajo cada operador en el gráfico.
    • F: Incluir el primer coste de tupla en el gráfico.
    • I: Incluir el coste de E/S bajo cada operador en el gráfico.
    • C: Incluir la cardinalidad de salida esperada (número de tuplas) de cada operador en el gráfico.
    • Nota: Se permite cualquier combinación de estas opciones, excepto F y T, que son mutuamente excluyentes.
extract_sql
Argumento de salida de tipo VARCHAR (2048) que contiene la sentencia SQL que se puede utilizar para extraer los datos formateados en EXPLAIN_STATEMENT.

Notas de uso

Los parámetros explain_schema, explain_requester, explain_time, source_schema, source_name, source_version, section_number constituyen la clave utilizada para buscar la información de la sección en las tablas de Explain. Si se han proporcionado entradas NULL, vacías o comodín para estos parámetros, el valor real utilizado se actualizará en el parámetro en el momento de la devolución.

El procedimiento realiza las funciones siguientes:
  • Utilice los parámetros pasados para dar formato a la información de EXPLAIN recuperada de las tablas de Explain.
  • Actualice los datos formateados en la tabla EXPLAIN_STATEMENT bajo la columna EXPLAIN_FORMAT_TEXT.
  • Devuelve los valores reales utilizados para todos los parámetros INOUT (es decir, explain_schema, explain_requester, explain_time, source_schema, source_name, source_version, section_number).
  • Si el procedimiento es satisfactorio, el parámetro OUT EXTRACT_SQL se llena con una sentencia SQL de ejemplo que se puede utilizar para recuperar datos formateados de la tabla EXPLAIN_STATEMENT. De lo contrario, se rellena con un mensaje de error.

Ejemplo

  1. Cree las tablas de Explain y recopile datos de Explain para la consulta o consultas de interés utilizando los métodos documentados en https://www.ibm.com/docs/en/db2/11.5?topic=optimization-explain-facility.
  2. Llame al procedimiento almacenado EXPLAIN_FORMAT , tal como se indica a continuación:
    Call explain_format('DB2INST1', 'DB2INST1', '2022-11-08-02.28.42.810882', 'SQLC2P31', 'NULLID', '', 0, '', '', 'T', ?)

    Utilice los parámetros de la tabla siguiente:

    Tipo Lista de parámetros Valor de ejemplo en el ejemplo anterior
    INOUT Esquema_explicación 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 Distintivos_gráficos T
    OUT SQL de extracción ?
  3. Extraiga los datos formateados de la tabla EXPLAIN_STATEMENT ejecutando la siguiente sentencia SQL desde el parámetro OUT extract_sql :
    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 consulta muestra el plan de explicación con formato similar al ejemplo siguiente:
    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
    EXPLICAR INSTANCIA:
    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
    
    

Búsqueda y respuesta de IA generativa
Estas respuestas las genera un modelo de lenguaje grande en watsonx.ai que se basa en el contenido de la documentación del producto. Más información