Quelle est la différence entre last_worker_time et last_elapsed_time dans DMV sys.dm_exec_query_stats?

11

Quelle est la signification de last_worker_time et last_elapsed_time dans DMV sys.dm_exec_query_stats et quelle est la différence entre eux?

quand je tire sous la requête

    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

Je reçois comme ci-dessous.

entrez la description de l'image ici

Ce que j'ai remarqué, c'est que les deux sont égaux ou que le temps écoulé est supérieur au temps du travailleur.


la source

Réponses:

16

Le temps de travail est le temps pendant lequel la ou les tâches étaient effectivement actives, occupant un planificateur et exécutant du code (c'est-à-dire non suspendues). Le temps écoulé est le temps d'horloge. Sur une requête DOP 1, le temps de travail sera au plus le temps écoulé, moins si la tâche a été suspendue à tout moment pendant l'exécution (ainsi le temps d'horloge avancerait, mais pas le temps de travail). Pour DOP> 1, les temps des travailleurs sont agrégés afin de pouvoir dépasser le temps écoulé, tout en restant soumis à une suspension.

Une différence significative entre le temps du travailleur et le temps écoulé indique un blocage, considérez le travailleur 682616 contre 11509766 écoulé: il s'agit d'une demande qui a bloqué pendant 11 secondes en attendant quelque chose (probablement un verrou).

Remus Rusanu
la source
Remarque: DOP signifie "degré de parallélisme"; 1 signifie que la requête entière est traitée par une seule CPU, plus d'une signifie que le travail est divisé en threads, chacun pouvant être exécuté par une CPU différente.
RDFozz
@RDFozz Désolé, je sais que c'est un vieux fil. Je voulais juste apporter une légère correction à ce que vous avez dit. Le DOP s'applique à chaque opérateur dans le plan d'exécution de la requête. Vous pouvez donc avoir plusieurs threads en cours d'exécution par requête, mais pas par opérateur. sqlmag.com/blog/common-misconception-about-maxdop
SpaceGhost440