¿Qué mide realmente la medición de duración en el servidor SQL?

8

¿Qué mide exactamente la duración de la consulta al realizar un seguimiento del generador de perfiles?

Tengo un procedimiento almacenado que realiza el acceso a datos (SELECCIONAR), y se tarda un promedio de alrededor de 30 segundos en devolver los resultados a la aplicación. Pero cuando ejecuto un seguimiento en él obtengo una duración promedio de alrededor de 8 segundos, duración máxima de 12 segundos, CPU promedio de 5.5 segundos.

¿Qué podría hacer que demore mucho más en devolver el conjunto de resultados? No estoy acumulando grandes esperas de NETWORKIO. El conjunto de resultados es solo alrededor de 270 filas de datos de texto simple, alrededor de 50 columnas en total.

sqlbattsman
fuente
44
Esto no incluye el tiempo necesario para entregar y presentar los resultados en el cliente.
Aaron Bertrand
Eso tiene sentido, pero si hubiera una gran demora (3 veces el tiempo de ejecución para obtener resultados), ¿no esperaría ver grandes esperas de NETWORKIO? Mi último reinicio fue ayer, con NETWORKIO espera de 230 segundos en total (no me parece mucho para un día).
sqlbattsman
3
¿Intentaste ejecutar el comando con SET STATISTICS TIME, etc.? Además, si se gasta tiempo renderizando, no lo vería en la red. ¿Se muestran algunas diferencias si representa todos esos datos en resultados en texto versus cuadrícula?
Aaron Bertrand
Los resultados al texto no son significativamente diferentes. Ahora, cuando lo ejecuto con SET STATISTICS TIME, la duración total que obtengo es mucho más precisa
sqlbattsman el

Respuestas:

1

La duración representa el tiempo total desde el inicio hasta el final de la solicitud de SQL Server, que representa el tiempo para enviar a través de la red, el tiempo de la CPU, las esperas y la ejecución. Como Aaron mencionó una vez que el cliente ha recibido los datos, SQL Server ha terminado su sincronización y el cliente está procesando. Esto no debería ser parte de la duración.

SheldonH
fuente