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!

Preguntas similare

Leer las respuestas

#6 Alejandro Mesa
05/07/2006 - 19:16 | Informe spam
Juan,

- Como ejecutas la consulta desde la aplicacion web?
- Usas un procedimiento almacenado?
- Como invocas el sp desde la aplicacion cliente?
- Puedes postear algo de codigo?


AMB


"Juan Ant." wrote:


Así pienso yo también. Comparando planes de ejecución, éstos son
diferentes, por lo que es lógico que la consulta no tarde lo mismo.
Pero no me parece lógico que genere planes de ejecución diferentes
porque esto no debería depender del driver. ¿No te parece?

Maxi wrote:
> mmm, es ilogico que pase eso, deberia andar lento en todo :S
>
>
> Salu2
> Maxi [MVP SQL SERVER]
> www.sqlgurus.org
>
>
> "Juan Ant." escribió en el mensaje
> news:
>
> Gracias Maxi. Probaremos.
>
> Hemos actualizado estadísticas de las dos tablas implicadas en la
> SELECT, y la consulta ha pasado a tardar poquísimo. No suena lógico,
> ¿no? Digo yo que si fuera problema de estadísticas desactualizadas,
> sería lento tanto por JDBC como por ODBC, ¿no?
>
> Gracias
>
> Maxi wrote:
> > 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!


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida