¿Cuál es la diferencia entre last_worker_time y last_elapsed_time en DMV sys.dm_exec_query_stats?


11

¿Qué significa last_worker_time y last_elapsed_time en DMV sys.dm_exec_query_stats y cuál es la diferencia entre ellos?

cuando disparo abajo consulta

    SELECT TOP 20 
qs.last_worker_time, qs.last_worker_time/1000000 last_worker_time_in_S,
qs.last_elapsed_time, qs.last_elapsed_time/1000000 last_elapsed_time_in_S
FROM sys.dm_exec_query_stats qs
order by qs.last_worker_time desc

Obtengo resultados como a continuación.

ingrese la descripción de la imagen aquí

Lo que noté fue que ambos son iguales o que el tiempo transcurrido es más que el tiempo del trabajador. Me gustaría entender una parte importante de ambos, por lo que también podría ayudarme a ajustar el rendimiento.

Respuestas:


16

El tiempo de trabajo es el tiempo en que las tareas estuvieron efectivamente activas, ocupando un programador y ejecutando código (es decir, no suspendido). El tiempo transcurrido es la hora del reloj. En una consulta DOP 1, el tiempo del trabajador será como máximo el tiempo transcurrido, menos si la tarea se suspendió en cualquier momento durante la ejecución (por lo tanto, el tiempo del reloj avanzaría, pero el tiempo del trabajador no). Para DOP> 1, el tiempo de los trabajadores se agrega para que puedan exceder el tiempo transcurrido, mientras aún están sujetos a suspensión.

Una diferencia significativa entre el tiempo del trabajador y el tiempo transcurrido es indicativo de bloqueo, considere el trabajador 682616 vs. 11509766 transcurrido: esta es una solicitud que bloqueó durante 11 segundos esperando algo (probablemente un bloqueo).


Nota: DOP significa "grado de paralelismo"; 1 significa que toda la consulta es procesada por una sola CPU, más de una significa que el trabajo se divide en subprocesos, cada uno de los cuales puede ser ejecutado por una CPU diferente.
RDFozz

@RDFozz Lo siento, sé que este es un hilo viejo. Solo quería hacer una pequeña corrección a lo que dijiste. El DOP se aplica a cada operador en el plan de ejecución de la consulta, por lo que aún puede tener varios subprocesos ejecutándose por consulta, pero no por operador. sqlmag.com/blog/common-misconception-about-maxdop
SpaceGhost440
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.