Consulta lenta por JDBC, rápida por ODBC

05/07/2006 - 15:54 por Juan Ant. | Informe spam
Tenemos una consulta que si la ejecutamos a través del Query Analyzer,
o cualquier cliente ODBC, tarda en torno a medio segundo. Esta consulta
está integrada dentro de una aplicación web, construida en Java, que
se conecta a Sql Server a través de JDBC.

Hemos creado una traza mediante el Sql Profiler (Analizador de Sql), y
vemos que esta misma consulta tarda algo más de 6 segundos cuando es
ejecutada desde la aplicación web. Además, también se incrementa el
número de lecturas (columna Reads que aparece en la traza). ¿Se os
ocurre algún motivo? Lógicamente, asumimos que la prueba se ha
realizado en idénticas condiciones de carga de sistema, con la base de
datos con el mismo volumen de datos, mismos índices, etc.

¿Existe alguna posibilidad, bien sea a través del Sql Profiler o de
cualquier otro medio, de obtener el plan de ejecución que una consulta
ha empleado? Sé que es posible a través del Query Analyzer. Puedo
llevarme la consulta, lanzarla ahí, y ver su plan de ejecución. Yo
quiero comparar ese plan, el que emplea el Query Analyzer para ejecutar
la consulta en 0.5 segundos, con el que haya empleado la consulta
ejecutada a través de JDBC, que ha tardado 6 segundos. ¿Puedo obtener
ese plan de ejecución?

Gracias!
 

Leer las respuestas

#1 Maxi
05/07/2006 - 16:12 | Informe spam
Hola, bueno aca el problema es sin ninguna duda el driver de java, yo lo que
te recomiendo si no lo has hecho es bajarte desde MS el ultimo driver para
java, esto lo podes encontrar en www.microsoft.com/sql



Salu2
Maxi [MVP SQL SERVER]
www.sqlgurus.org


"Juan Ant." escribió en el mensaje
news:
Tenemos una consulta que si la ejecutamos a través del Query Analyzer,
o cualquier cliente ODBC, tarda en torno a medio segundo. Esta consulta
está integrada dentro de una aplicación web, construida en Java, que
se conecta a Sql Server a través de JDBC.

Hemos creado una traza mediante el Sql Profiler (Analizador de Sql), y
vemos que esta misma consulta tarda algo más de 6 segundos cuando es
ejecutada desde la aplicación web. Además, también se incrementa el
número de lecturas (columna Reads que aparece en la traza). ¿Se os
ocurre algún motivo? Lógicamente, asumimos que la prueba se ha
realizado en idénticas condiciones de carga de sistema, con la base de
datos con el mismo volumen de datos, mismos índices, etc.

¿Existe alguna posibilidad, bien sea a través del Sql Profiler o de
cualquier otro medio, de obtener el plan de ejecución que una consulta
ha empleado? Sé que es posible a través del Query Analyzer. Puedo
llevarme la consulta, lanzarla ahí, y ver su plan de ejecución. Yo
quiero comparar ese plan, el que emplea el Query Analyzer para ejecutar
la consulta en 0.5 segundos, con el que haya empleado la consulta
ejecutada a través de JDBC, que ha tardado 6 segundos. ¿Puedo obtener
ese plan de ejecución?

Gracias!

Preguntas similares