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.
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: