Inicio del cambio

Estabilización de vías de acceso para sentencias de SQL dinámico

Puede estabilizar las vías de acceso para sentencias de SQL dinámico almacenadas en la memoria caché recurrentes con el fin de obtener características de estabilidad similares a las de aplicaciones que utilizan sentencias de SQL estático.

Antes de empezar

Establezca el valor del parámetro de subsistema CACHEDYN_STABILIZATION en un valor adecuado. Para obtener más información, consulte el campo CACHE DYN STABILITY (parámetro del subsistema CACHEDYN_STABILIZATION ).

Observe la caché de instrucciones dinámicas para identificar las instrucciones que es probable que deban capturarse para su estabilización, tal como se describe en Identificación de instrucciones SQL dinámicas para estabilizar.

Acerca de esta tarea

Cuando se estabilizan sentencias de SQL dinámico, Db2 almacena el SQLID actual, el texto de la sentencia y las estructuras en tiempo de ejecución para las sentencias de SQL dinámico estabilizadas en determinadas tablas de catálogo de Db2. Cuando se produce una pérdida de memoria caché para una sentencia de SQL dinámico estabilizada, Db2 carga las estructuras de memoria caché del catálogo en lugar de procesar una preparación completa de la sentencia.

Procedimiento

Para estabilizar vías de acceso para sentencias de SQL dinámico:

  1. Inicio del cambioSi planea especificar un valor umbral para capturar extractos, active los rastreos para IFCID 316 e IFCID 318.fin del cambio
  2. Emita mandatos START DYNQUERYCAPTURE.
    Puede capturar una sentencia concreta de la memoria caché de la sentencia dinámica, capturar una instantánea inmediata de sentencias almacenadas en memoria caché o iniciar una supervisión en curso de sentencias almacenadas en memoria caché.
    Por ejemplo, puede emitir las sentencias siguientes: Iniciar la información de la interfaz de programación de uso general.
    Capture y estabilice una única sentencia
    -START DYNQUERYCAPTURE STBLGRP(APP1) STMTID(1253)

    La sentencia única con STMTID 1253 se captura y se estabiliza en el catálogo de Db2 del grupo de estabilización APP1.

    Capture una instantánea de sentencias de SQL dinámico almacenadas en memoria caché
    -STA DYNQUERYCAPTURE STBLGRP(APP1) THRESHOLD(100) 
    CURSQLID(APP1ID) MONITOR (NO)

    Todas las sentencias dinámicas almacenadas en memoria caché emitidas por el identificador de SQL actual APP1ID más de 100 veces están estabilizadas en el grupo de estabilización APP1.

    Capture y supervise sentencias de SQL dinámico almacenadas en memoria caché
    -START DYNQUERYCAPTURE STBLGRP(APP1) THRESHOLD(100) 
    CURSQLID(APP1ID) MONITOR(YES)

    Como antes, todas las sentencias dinámicas almacenadas en memoria caché emitidas por el identificador de SQL actual APP1ID más de 100 veces están capturadas y estabilizadas en el catálogo en el grupo de estabilización APP1. Sin embargo, las supervisión en curso también captura sentencias que cumplen los mismos criterios mientras la captura permanece activa.

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

Qué hacer a continuación

Realice alguna de las acciones siguientes:

  • Emita mandatos DISPLAY DYNQUERYCAPTURE para identificar sentencias de SQL dinámico que se están supervisando para la estabilización.
  • Emita mandatos STOP DYNQUERYCAPTURE para detener la supervisión y captura de sentencias de SQL dinámico.
  • Establezca un proceso para comprobar las sentencias de SQL dinámico estabilizadas que ya no se utilizan, para reclamar el espacio de almacenamiento utilizado en el catálogo de Db2 por dichas sentencias.
  • Inicio del cambioCuando esté listo para obtener una nueva ruta de acceso o recuperar el almacenamiento del catálogo para instrucciones SQL dinámicas estabilizadas, emita un comando FREE STABILIZED DYNAMIC QUERY, como se describe en Eliminación de instrucciones SQL dinámicas estabilizadas del catálogo Db2.fin del cambio
fin del cambio