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


11

DMV sys.dm_exec_query_stats中last_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

我得到如下结果。

在此处输入图片说明

关于我发现要么两者都是相等的,要么是经过的时间大于工作人员的时间。我想理解两者的意义,因此也可能有助于我进行性能调整。

Answers:


16

工作时间是指任务有效执行,占用调度程序和运行代码(即未挂起)的时间。经过的时间是时钟时间。在DOP 1查询中,工作时间最多为经过的时间,如果任务在执行过程中的任何时候被挂起(则时钟时间会提前,但工作时间不会)则更少。对于DOP> 1,工时将累加起来,这样它们可以超过经过的时间,同时仍然会暂停。

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


注意:DOP代表“并行度”;1表示整个查询由单个CPU处理,一个以上表示将作业分为多个线程,每个线程都可以由不同的CPU运行。
RDFozz '17

@RDFozz对不起,我知道这是一个旧线程。只是想对您所说的内容做些小更正。DOP适用于查询执行计划中的每个运算符。因此,每个查询仍可以运行多个线程,而不是每个运算符。 sqlmag.com/blog/common-misconception-about-maxdop
SpaceGhost440'9
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.