Pregunta

Me gustaría utilizar la APP por medio de JDBC para una nueva aplicación. Estoy estrictamente el uso de consultas con nombre y métodos CRUD básicas del gestor de APP Entidad, lo que me permite (con la ayuda de Hibernate, o cualquier otra aplicación APP) para extraer todas las consultas SQL nativas que se pueden realizar en la base de datos. Con esta lista de consultas estáticas, entiendo que puedo construir un paquete de DB2 que está todos los planes de ejecución de mis peticiones.

Así que mi pregunta es: ¿la realización de esas consultas a través de JDBC en DB2 se aprovechará de los planes de ejecución, o no? Yo entiendo que el producto pureQuery puede capturar la lista de órdenes SQL. Qué, aún a través de JDBC y no a través de la API específica pureQuery, proporcionar más? Tal característica se unen estática DB2 específico? o es equivalente a JDBC?

Gracias por cualquier pieza de respuesta.

¿Fue útil?

Solución

aplicaciones JDBC ejecutar SQL dinámico solamente (es decir, DB2 no utiliza paquetes estáticos).

Sólo hay 2 maneras de obtener SQL estático (donde se almacenan las consultas en un paquete en la base de datos): Escribir su aplicación utilizando SQLJ (que elimina JPA / Hibernate) o utilizar pureQuery (que se encuentra entre JDBC y la base de datos) .

Tenga en cuenta que incluso con SQL dinámico, DB2 hace almacenar en caché los planes de ejecución de consultas, por lo que si se ejecutan con la suficiente frecuencia (es decir, que permanecen en la memoria caché), entonces usted no verá la cabeza de la compilación de la consulta. La caché sólo es útil si las consultas son una coincidencia exacta byte por byte, por lo select * from t1 where c1 = 1 no es lo mismo que select * from t1 where c1 = 2, ni es select * from t1 where C1 = 1 (que da el mismo resultado, pero la consulta es diferente). El uso de marcadores de parámetros (select * from t1 where c1 = ?) es la clave. Su DBA puede ajustar el tamaño de la caché de catálogo para ayudar a maximizar la tasa de aciertos en esta memoria caché.

A pesar de que el almacenamiento en caché ayuda a evitar repetidamente la compilación de una consulta, que no ofrece la estabilidad plan que SQL estático hace, por lo que tu caso es distinto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top