Habilitar la caché de instrucciones dinámicas para mejorar el rendimiento de SQL dinámico

La caché de instrucciones dinámicas es un conjunto de almacenamiento donde Db2 guarda estructuras de control para instrucciones SQL preparadas que pueden compartirse entre diferentes hilos, planes y paquetes. Compartiendo estas estructuras de control, las aplicaciones pueden evitar procesos de preparación no necesarios y, así, mejorar el rendimiento.

Acerca de esta tarea

Como la capacidad de Db2 para optimizar SQL ha mejorado, el coste de preparación de una sentencia de SQL dinámico ha aumentado. Las aplicaciones que utilizan SQL dinámico pueden verse obligadas a pagar este precio más de una vez. Cuando una aplicación realiza una operación de confirmación, debe emitir otra sentencia PREPARE si esta sentencia de SQL debe volverse a ejecutar. Para una sentencia SELECT, la posibilidad de declarar un cursor WITH HOLD proporciona algunas ventajas pero requiere que el cursor esté abierto en el punto de confirmación. WITH HOLD también hace que se mantengan algunos bloqueos para los objetos de los que depende la sentencia preparada. Además, WITH HOLD no ofrece ninguna ventaja para sentencias SQL que no sean sentencias SELECT.

Db2 puede guardar sentencias dinámicas preparadas en una memoria caché. La memoria caché es una agrupación de caché de sentencias dinámicas que todos los procesos de aplicaciones pueden utilizar para guardar y recuperar sentencias dinámicas preparadas. Después de haber preparado una sentencia de SQL y de que se haya guardado automáticamente en la caché, las solicitudes de preparación posteriores para la misma sentencia SQL pueden evitar el costoso proceso de preparación si utilizan la sentencia que está en la memoria caché. Las sentencias que se guardan en la caché pueden compartirlas distintas hebras, planes o paquetes.

Por ejemplo, supongamos que su programa de aplicación contiene una sentencia de SQL dinámico, STMT1, que se prepara y se ejecuta varias veces. Si se utiliza la memoria caché de sentencias dinámicas cuando STMT1 se prepara por primera vez, dicha sentencia se coloca en la memoria caché. Cuando el programa de aplicación encuentra la sentencia PREPARE idéntica para STMT1, Db2 utiliza el STMT1 ya preparado que se guarda en la memoria caché de sentencias dinámicas. El ejemplo siguiente muestra la STMT1 idéntica que podría aparecer en su programa de aplicación:
PREPARE STMT1 FROM ...     Statement is prepared and the prepared
EXECUTE STMT1              statement is put in the cache.
COMMIT
⋮
PREPARE STMT1 FROM ...     Identical statement. DB2 uses the prepared
EXECUTE STMT1              statement from the cache.
COMMIT
⋮

Es necesario habilitar la caché de sentencia dinámica para poder usarla.

Procedimiento

Para habilitar la caché de sentencia dinámica para guardar sentencias preparadas:

Especifique YES para el valor del parámetro de subsistema CACHEDYN.