DMV sys.dm_exec_query_stats 中的 last_worker_time 和 last_elapsed_time 有什么区别?

12 sql-server-2005 sql-server dmv

DMV sys.dm_exec_query_statslast_worker_timelast_elapsed_time是什么意思,它们之间有什么区别

当我触发以下查询时

    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
Run Code Online (Sandbox Code Playgroud)

我得到如下结果。

在此处输入图片说明

我注意到的事情是两者相等或经过的时间超过工作时间。我想了解两者的重要性,因此它也可能有助于我进行性能调整。

Rem*_*anu 19

工作时间是任务有效活动、占用调度程序和运行代码(即未挂起)的时间。经过的时间是时钟时间。在 DOP 1 查询中,工作时间最多是经过的时间,如果任务在执行期间的任何时刻暂停,则更少(因此时钟时间会提前,但工作时间不会)。对于 DOP > 1,工作时间累计,因此他们可以超过经过的时间,同时仍会被暂停。

工作时间和经过时间之间的显着差异表示阻塞,考虑 682616 工作人员与经过 11509766 的时间:这是一个阻塞了 11 秒等待某事(可能是锁)的请求。