sys.dm_exec_query_stats中的值976有什么特别之处?

时间:2013-11-04 12:39:32

标签: sql-server sql-server-2008-r2 dmv

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

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

MSDN documentation说明了关于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上。

1 个答案:

答案 0 :(得分:2)

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