Inicio del cambio

Identificación de sentencias de SQL dinámico a estabilizar

Puede revisar la memoria caché de sentencias dinámicas para identificar sentencias de SQL dinámico que pueden beneficiarse de la estabilidad del plan de SQL dinámico.

Acerca de esta tarea

El objetivo es descubrir y evaluar las sentencias dinámicas almacenadas en memoria caché que probablemente se capturen y estabilicen cuando emita los mandatos START DYNQUERYCAPTURE.

Procedimiento

Para identificar sentencias de SQL dinámico a estabilizar:

  1. Borre y llene la tabla DSN_STATEMENT_CACHE.
    Por ejemplo, puede emitir las siguientes sentencias:

    Iniciar la información de la interfaz de programación de uso general.

    DELETE FROM DSN_STATEMENT_CACHE_TABLE;
    COMMIT;
    EXPLAIN STMTCACHE ALL;
    COMMIT;
    
    Finalizar la información de la interfaz de programación de uso general.
  2. Consulte la tabla de memoria caché de la sentencia dinámica.
    Por ejemplo, puede emitir la sentencia siguiente:

    Iniciar la información de la interfaz de programación de uso general.

    SELECT STMT_ID, STBLGRP, QUERY_HASH, PER_STMT_ID, 
         STABILIZED, CURSQLID, STAT_EXECB, STAT_CPU, STAT_ELAP, 
         STMT_TEXT 
    FROM  DSN_STATEMENT_CACHE_TABLE
    WHERE LITERAL_REPL = ''
        AND   STAT_EXECB > 10
        AND   CURSQLID = 'APP1ID'
    ORDER BY STAT_EXECB DESC;
    Finalizar la información de la interfaz de programación de uso general.

    La cláusula WHERE de la sentencia de ejemplo aplica los filtros siguientes:

    WHERE LITERAL_REPL = ‘’
    Excluye sentencias con valores literales concentrados
    AND STAT_EXECB >= 10
    Excluye sentencias que se ejecutan con poca frecuencia.
    AND CURSQLID = 'APP1ID'
    Devuelve sólo consultas utilizadas por un SQLID concreto.

    La cláusula ORDER BY STAT_EXECB DESC organiza el resultado por la frecuencia de ejecución.

    La consulta de ejemplo selecciona las siguientes columnas.

    STBLGRP
    El grupo de estabilización.
    QUERY_HASH
    Una clave hash generada desde el texto de la sentencia SQL, que es un identificador estable.
    PER_STMT_ID
    El identificador de una sentencia de SQL dinámico estabilizada cuando se carga desde el catálogo
    STABILIZED
    Si la sentencia ya se ha estabilizado. Es posible que la sentencia se haya estabilizado en otro miembro después de que se entra en la memoria caché.
    CURSQLID
    El identificador de autorización de SQL actual para la sentencia. Este valor es útil para la captura selectiva de sentencias para estabilización.
    STAT_EXECB
    El número de veces que se ha ejecutado la sentencia que es útil para determinar el umbral para capturar sentencias.
    STAT_CPU y STAT_ELAP
    Las características de rendimiento de la sentencia.
    STMT_TEXT
    El texto de la sentencia.
  3. Analice el resultado de la consulta para responder a las siguiente preguntas
    • ¿Cuántas consultas se pueden estabilizar para un umbral determinado?
    • ¿Es aceptable el rendimiento existente? No desea estabilizar un rendimiento bajo.
fin del cambio