2014-10-01 97 views
4

on http://technet.microsoft.com/en-us/library/aa173882(v=sql.80).aspx 我在讀取該CPU爲「事件使用的CPU時間量(以毫秒爲單位)」。 並且持續時間是「事件佔用的時間量(以毫秒爲單位)」。 因此,我正在解決一個查詢使用2650ms的CPU,但只運行773ms持續時間,這些數字不應該有點接近?查詢如何使用比整個事件持續時間更多的cpu時間? 謝謝SQL Server Profiler中的CPU與持續時間

+0

您需要了解操作系統如何工作,爲不同進程提供時間片。這是一個開始的地方:http://en.wikipedia.org/wiki/Preemption_(computing)#Time_slice。注意:在多處理器環境(或超線程環境)中,您需要考慮處理器/線程的數量。 – 2014-10-01 19:13:41

+0

檢查執行計劃。看起來你有一個並行查詢,這可以解釋爲什麼CPU時間比持續時間更長。 – 2014-10-01 19:16:04

回答

5

最可能發生的事情是,您的SQL服務器正在將您的SELECT語句拆分爲在多核CPU上的多個線程上運行。根據返回的時間來判斷,我想冒險猜測你的服務器中有一個四核CPU。例如:如果CPU1,Cpu2和CPU3全部耗時750毫秒,CPU4耗時400毫秒,那麼總共需要2650毫秒,但總時長僅爲750毫秒。

+0

感謝您的解釋;它總是感覺我不知道爲什麼我以前從未想到過。 – Don 2014-10-16 14:36:08