0

在查询sys.dm_exec_query_stats DMV 时,我在last_worker_time列上观察到一些有趣的行为。

通常,它为我正在监视的特定存储过程报告 0。但是偶尔它会返回一个非零值,当它返回时,它似乎总是 976。

MSDN 文档对last_worker_time 列进行了以下说明:

上次执行计划时消耗的 CPU 时间,以微秒为单位报告(但仅精确到毫秒)。

然而,这并不能解释奇怪的行为。谁能解释为什么 976 的价值如此之多?

我的 DMV 查询的以下简化版本产生了这种现象:

select
    qs.last_worker_time
from
    sys.dm_exec_query_stats qs
    cross apply sys.dm_exec_sql_text(qs.plan_handle) st
where   
    db_name(st.dbid) = 'IntegrationManagement'
    and object_name(st.objectid, st.dbid) in ('GetFromOutQueue')

SQL Server 2008 R2 实例托管在 VMware 上运行的 Windows Server 2008 R2 上。

4

1 回答 1

2

如果使用每秒滴答 1024 次的计时器完成测量,您会看到这一点。通常程序的开始和结束之间没有滴答声,报告的时间为0us。有时只有一个刻度,报告的时间是 1/1024 秒,向下舍入到最接近的微秒 = 976 us。

于 2013-11-05T00:12:33.137 回答