0 / 0
Retourner à la version anglaise de la documentation
Procédure stockée EXPLAIN_FORMAT dans la Data Virtualization
Dernière mise à jour : 26 nov. 2024
Procédure stockée EXPLAIN_FORMAT dans la Data Virtualization

Vous pouvez exécuter la procédure stockée " EXPLAIN_FORMAT dans la Data Virtualization pour exécuter la commande " db2exfmt. Vous pouvez spécifier le formatage des informations EXPLAIN générées lorsque vous générez des plans d'accès de requête et télécharger la sortie EXPLAIN générée dans des fichiers texte.

La procédure EXPLAIN_FORMAT formate le contenu des tables EXPLAIN en fonction des paramètres spécifiés et met à jour les données formatées dans la table EXPLAIN_STATEMENT sous la colonne EXPLAIN_FORMAT_TEXT. La procédure renvoie également une instruction SQL en tant que paramètre OUTPUT, qui peut être utilisée pour extraire les données formatées de la table EXPLAIN_STATEMENT. Pour plus d'informations sur la table EXPLAIN , voir EXPLAIN_STATEMENT table dans la documentation Db2® .

La procédure n'émet pas d'instruction COMMIT après la mise à jour des tables EXPLAIN . L'appelant de la procédure doit émettre une instruction COMMIT .

Le schéma est SYSPROC.

Autorisations

L'un des droits ou privilèges suivants est requis pour exécuter la routine:
  • Privilège EXECUTE sur la routine
  • Droits d'accès DATAACCESS
  • Droits d'accès DBADM
  • Droits d'accès SQLADM
En outre, les privilèges détenus par l'ID d'autorisation de la session, y compris les privilèges accordés aux groupes, doivent inclure au moins l'une des options suivantes:
  • Privilège INSERT sur les tables EXPLAIN dans le schéma spécifié
  • Privilège CONTROL sur les tables EXPLAIN dans le schéma spécifié
  • Droits d'accès DATAACCESS
  • Privilège PUBLIC par défaut
  • EXECUTE

Syntaxe

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

Paramètres de procédure

schéma_explicatif
Argument d'entrée ou de sortie de type VARCHAR (128) qui spécifie le schéma contenant les tables EXPLAIN dans lesquelles les informations EXPLAIN doivent être écrites. Si une chaîne vide ou NULL est spécifiée, une recherche est effectuée pour les tables EXPLAIN sous le schéma par défaut de l'ID autorisation en cours, puis le schéma SYSTOOLS. Si les tables Explain sont introuvables sous le schéma spécifié, SQL0219N est renvoyé. Si l'appelant ne dispose pas du privilège INSERT sur les tables EXPLAIN du schéma spécifié, SQL0551N est renvoyé.
demande_explicatif
Argument d'entrée ou de sortie de type VARCHAR (128) qui spécifie l'ID autorisation de l'initiateur de cette demande d'explication. Si une chaîne vide ou NULL est spécifiée, une recherche est effectuée pour les tables EXPLAIN sous la session en cours.
EXPLAIN_TIME
Argument d'entrée ou de sortie de type TIMESTAMP qui contient l'heure d'initiation de la requête Explain. Si NULL est spécifié, obtenez la demande d'explication la plus récente.
SOURCE_NAME
Argument d'entrée ou de sortie de type VARCHAR (128) qui spécifie le nom de package (SOURCE_NAME) ou le nom d'objet pour la demande Explain. Le package est utilisé si l'option object_type n'est pas spécifiée.
SOURCE_SCHEMA
Argument d'entrée ou de sortie de type VARCHAR (128) qui spécifie le schéma de package (SOURCE_SCHEMA) de la demande de package. Si aucun schéma de package n'est spécifié, cette option est définie sur'%'. Si le paramètre object_module est fourni pour la procédure ou la fonction, cette option correspond au schéma du module. Si le type d'objet est une procédure, une fonction ou un déclencheur, il s'agit du schéma de l'objet associé. Si le type d'objet n'est pas une procédure, une fonction ou un déclencheur et que le paramètre object_module n'est pas fourni, le schéma est défini sur la valeur du registre spécial CURRENT SCHEMA.
version_source
Argument d'entrée ou de sortie de type VARCHAR (128) qui spécifie la version de package (SOURCE_VERSION) de la demande Explain. La valeur par défaut est%.
section_number
Argument d'entrée ou de sortie de type INTEGER qui contient le numéro de section dans la source. Pour demander toutes les sections, indiquez zéro.
type_objet
Type de l'objet indiqué. Le type par défaut est package.
  • PK: Nom du package
  • P: Nom de la procédure SQL
  • SP: Nom de procédure SQL spécifique
  • F: Fonction compilée
  • SF: nom de fonction compilée spécifique
  • T: déclencheur compilé
module_objet
Nom de module de la routine lorsque l'option object_type est P, SP, F ou SF. Les noms de module sont ignorés si le paramètre object_type n'est pas spécifié.
indicateurs de format
Argument d'entrée de type VARCHAR (128) contenant plusieurs indicateurs pouvant être combinés en tant que chaîne. Si une chaîne vide ou NULL est spécifiée, les options de formatage sont déterminées automatiquement.
  • O: Récapitulatif de l'opérateur
  • Y: Forcer le formatage de l'instruction d'origine même si la colonne EXPLAIN_STATEMENT.EXPLAIN_TEXT contient le formatage. Le comportement par défaut consiste à détecter automatiquement si l'instruction requiert un formatage et à utiliser le formatage d'origine lorsqu'il existe.
  • C: Utilisez un mode plus compact lors du formatage des instructions et des prédicats. La valeur par défaut est un mode étendu. Si Y n'est pas spécifié, C ne prend effet que si la détection automatique détermine que l'instruction nécessite un formatage.
graph_flags
Argument d'entrée de type VARCHAR (128) qui contient plusieurs indicateurs de graphique pouvant être combinés en tant que chaîne. Si une chaîne vide ou NULL est spécifiée,'TIC'est l'option par défaut.
  • Désactiver les options (par défaut, elles sont activées). S'il est vide, un graphique, suivi des informations formatées pour toutes les tables, est généré. Sinon, n'importe quelle combinaison des valeurs valides suivantes peut être spécifiée:
    • O: Générer un graphique uniquement. Ne formatez pas le contenu de la table.
    • T: Inclure le coût total sous chaque opérateur dans le graphique.
    • F: Inclure le premier coût de tuple dans le graphique.
    • I: Inclure le coût d'E-S sous chaque opérateur dans le graphique.
    • C: Inclure la cardinalité de sortie attendue (nombre de tuples) de chaque opérateur dans le graphique.
    • Remarque: Toute combinaison de ces options est autorisée, sauf F et T, qui s'excluent mutuellement.
extract_sql
Argument de sortie de type VARCHAR (2048) contenant l'instruction SQL qui peut être utilisée pour extraire les données formatées par rapport à EXPLAIN_STATEMENT.

Notes d'utilisation

Les paramètres explain_schema, explain_requester, explain_time, source_schema, source_name, source_version, section_number comprennent la clé utilisée pour rechercher les informations de la section dans les tables EXPLAIN. Si des entrées NULL, vides ou génériques ont été fournies pour ces paramètres, la valeur réelle utilisée sera mise à jour dans le paramètre lors du retour.

La procédure exécute les fonctions suivantes:
  • Utilisez les paramètres transmis pour formater les informations EXPLAIN extraites des tables EXPLAIN.
  • Mettez à jour les données formatées dans la table EXPLAIN_STATEMENT sous la colonne EXPLAIN_FORMAT_TEXT.
  • Renvoie les valeurs réelles utilisées pour tous les paramètres INOUT (c'est-à-dire explain_schema, explain_requester, explain_time, source_schema, source_name, source_version, section_number).
  • Si la procédure aboutit, le paramètre OUT EXTRACT_SQL est rempli avec un exemple d'instruction SQL qui peut être utilisé pour extraire des données formatées de la table EXPLAIN_STATEMENT. Sinon, il est rempli avec un message d'erreur.

Exemple

  1. Créez les tables EXPLAIN et collectez des données EXPLAIN pour la ou les requêtes qui vous intéressent à l'aide des méthodes décrites dans https://www.ibm.com/docs/en/db2/11.5?topic=optimization-explain-facility.
  2. Appelez la procédure mémorisée EXPLAIN_FORMAT , comme suit:
    Call explain_format('DB2INST1', 'DB2INST1', '2022-11-08-02.28.42.810882', 'SQLC2P31', 'NULLID', '', 0, '', '', 'T', ?)

    Utilisez les paramètres du tableau suivant:

    Type Liste de paramètres Exemple de valeur dans l'exemple ci-dessus
    INOUT Schéma_explicatif DB2INST1
    INOUT Demandeur d'explication DB2INST1
    INOUT EXPLAIN_TIME 2022-11-08-02.28.42.810882
    INOUT SOURCE_NAME SQLC2P31
    INOUT SOURCE_SCHEMA NULLID
    INOUT Version_source  
    INOUT section_number 0
    IN OBJECT_TYPE  
    IN Module_objet  
    IN Indicateurs graphiques T
    OUT SQL d'extraction ?
  3. Extrayez les données formatées de la table EXPLAIN_STATEMENT en exécutant l'instruction SQL suivante à partir du paramètre 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 requête affiche le plan Explain formaté comme dans l'exemple suivant:
    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
    INSTANCE D'EXPLICATION:
    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
    
    

Recherche et réponse à l'IA générative
Ces réponses sont générées par un modèle de langue de grande taille dans watsonx.ai en fonction du contenu de la documentation du produit. En savoir plus