2013-11-04 44 views
0

當查詢sys.dm_exec_query_stats DMV時,我在last_worker_time列上觀察到一些有趣的行爲。sys.dm_exec_query_stats中的值976有什麼特別之處?

通常,它爲我正在監視的特定存儲過程報告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實例的Windows Server 2008 R2在VMware上運行的託管。

+1

這個問題會在http://dba.stackexchange.com/上做得更好嗎? –

回答

2

如果測量是使用每秒鐘1024次的計時器完成的,您會看到這一點。通常在程序的開始和結束之間沒有打勾,報告的時間是0us。有時會有一個勾號,報告的時間是1/1024秒,向下舍入到最接近的微秒= 976 us。

+0

謝謝,我懷疑它與CPU時鐘有關,但那是我得到的。你的回答很有道理。 –

相關問題