sql >> Base de Datos >  >> Database Tools >> SSMS

Tiempo de ejecución de consultas en Management Studio y Profiler. ¿Qué mide?

Si entiendo su pregunta correctamente, primero está cuestionando la diferencia entre la Duración informada por Profiler y las estadísticas presentadas en SSMS (ya sea en la esquina inferior derecha para el tiempo general y/o CONFIGURAR EL TIEMPO DE LAS ESTADÍSTICAS). Además de eso, parece que no está convencido del comentario del DBA de producción de que la vista se está ejecutando en la duración esperada de ~60 segundos.

Primero, de Books Online, las estadísticas que SSMS informaría a través de SET STATISTICS TIME ON:

"Muestra la cantidad de milisegundos necesarios para analizar, compilar y ejecutar cada instrucción".

Estás en el clavo para esto. En cuanto a la Duración en Profiler, se describe como:

"La duración (en microsegundos) del evento".

Desde mi punto de vista, estos dos deberían ser funcionalmente equivalentes (y, como estoy seguro de que notó, Profiler informará en microsegundos si va en contra de SQL 2005 o posterior). Digo esto porque el "evento" en este caso (con respecto a la Duración en Profiler) es la ejecución de la selección, que incluye la entrega al cliente; esto es consistente en ambos casos.

Parece que sospecha que la geografía es la culpable de la larga duración al ejecutar la consulta de forma remota. Esto muy bien puede ser. Puede probar esto ejecutando la selección en la vista en una ventana de consulta y luego generando otra ventana de consulta y revisando el tipo de espera en la consulta:

select
    a.session_id
    ,a.start_time
    ,a.status
    ,a.command
    ,db_name(a.database_id) as database_name
    ,a.blocking_session_id
    ,a.wait_type
    ,a.wait_time
    ,a.cpu_time
    ,a.total_elapsed_time
    ,b.text
from sys.dm_exec_requests a
    cross apply sys.dm_exec_sql_text(a.sql_handle) b
where a.session_id != @@spid;

Sospecho que vería algo como ASYNC_NETWORK_IO como el tipo de espera si la geografía es el problema; de lo contrario, vea qué sucede con esto. Si está generando un perfil de la consulta de su ejecución remota, la duración reflejará las estadísticas de tiempo que ve en SSMS. SIN EMBARGO, si está utilizando Profiler y descubre que la duración de esta consulta cuando se ejecuta desde uno de los servidores web que se encuentra en el mismo centro de datos que el servidor SQL todavía tarda 7 minutos, entonces el DBA es un gran mentiroso :). Usaría Profiler para registrar consultas que toman más de 1 minuto, tratar de filtrar por su vista y tomar el promedio para ver si está en el objetivo de rendimiento.

Debido a que no hay otras respuestas publicadas, me preocupa estar muy equivocado aquí, pero es tarde y soy nuevo en esto, ¡así que pensé en intentarlo!