文章編號: 931279 - 上次校閱: 2008年12月16日 - 版次: 7.0 當您使用公用程式或變更 CPU 頻率的技術時,SQL Server 的執行時間值可能會不正確
在此頁中結論Microsoft SQL Server 2005 中使用高解析度的 CPU 計數器,提供微秒計時功能。一個微秒是一個 millionth 的第二個 (或一),以毫秒的)。不過,SQL Server 的執行時間值可能不正確,如果您使用變更 CPU 頻率的技術。例如當您使用任何下列技術時,可能就會發生這個問題:
徵狀使用 SET 統計資料 TIME 陳述式顯示伺服器執行、 剖析及編譯時間時,您可能會取得不正確的值。比方說,您可能會發現 SQL Server 的執行時間的已耗用時間是更多比 CPU 時間。這個問題可能會影響效能微調的正確性。當您在 < 摘要 > 一節,在伺服器上使用技術所列出的其中之一,就會發生這個問題。 發生的原因CPU 頻率會變更當您使用這些技術時,就會發生這個問題。SQL Server 2005 中使用高解析度的 CPU 計數器,提供微秒計時功能。如果 CPU 頻率會變更以節省能源,並減少熱度輸出,計算的工期可能不正確。 解決方案服務套件資訊如果要解決這個問題,取得最新的 Service Pack 的 SQL Server 2005。如需詳細資訊,請按一下下列的文件編號,檢視 「 Microsoft 知識庫 」 中的文件:913089?
(http://support.microsoft.com/kb/913089/
)
如何取得最新的 Service Pack,SQL Server 2005 的 附註在 SQL Server 2005 Service Pack 3 和更新版本的 Service Pack 中,不會使用處理器時間戳記。這些版本的 SQL Server 2005 使用更可靠的計時器具有 1 毫秒的最大精確度。狀況說明 這個問題已經先在 SQL Server 2005 Service Pack 3 中獲得修正。 其他可行方案SQL Server 2005 需要執行精確的效能調整的已知且穩定的資料點。 如果您在電腦上啟用動態 CPU 頻率調整,您可以停用它們讓 CPU 維護一個穩定的頻率速率,來監視及調整 SQL Server 效能開始之前。如果要執行此動作使用下列方法。 若要強制維持在最大頻率 CPU 電腦上設定的電源配置要這麼做,請您執行下列步驟:
如果您不能重新啟動電腦,啟用 SQL Server 處理器相似性,若要防止 SQL Server 背景工作執行緒的 CPU 之間移動。當您執行這項操作時您沒有重新啟動電腦,即使發生 CPU 頻率值之間有分歧。 若要以便在伺服器上的所有 CPU 的 SQL Server 處理器相關性,您必須使用一個不同的遮罩在伺服器上的邏輯處理器數目而定。 下表列出範例案例。 摺疊此表格
使用協力廠商公用程式和驅動程式來同步處理 CPU 的頻率和 CPU 時脈計數器在極少數情況下一個系統可能需要從製造廠商更正 CPU 頻率問題的更新。最好檢查最新的 BIOS、 微碼和韌體更新系統,如果您懷疑系統可能有問題。其他相關資訊Microsoft SQL Server 2000 及較早版本的 SQL Server 使用 Windows 計時機制。計時機制使用毫秒精確度值。 通常,此精確度不過是 10 至 15 ms.,精確度可能 55 ms 一樣大。 SQL Server 查詢經常在單一位數毫秒內完成,或跨越微秒的時間。此整數位數需要高解析度的計時器。 因此,這些版本 SQL Server 報表某些查詢期間為 0 ms.因此很難監視效能,並調整在較早版本的 SQL Server 中的 SQL Server 效能。 SQL Server 2005 可以藉由使用高解析度的 CPU 計數器來提供微秒計時功能改善正確性。當您在 < 摘要 > 一節中使用列出的技術時,報告的時間值可能不正確。 這個問題可能會影響下列物件和功能:
錯誤訊息的文字會類似下列的錯誤訊息之一: 錯誤訊息 1 排程器識別碼 2 上的 CPU,時間戳記計數器不是與其他 CPU 同步。 錯誤訊息 2 CPU 時間戳記頻率已經由 191469 變更成每毫秒 1794177 刻度。將使用新的頻率 SQL Server 會使用即時戳記計數器 (RDTSC) 指令,來取得 64 位元 CPU 的滴答計數。這個值可以除以 CPU 頻率將值轉換為毫秒值。 當 CPU 頻率變更或三藏發生時,可能就會發生計時變化。 CPU 逐步執行CPU 逐步執行以 CPU 頻率定義為蓄意的變更。 CPU 逐步執行可能也被稱為 Intel SpeedStep 技術或 AMD PowerNow!技術。當 CPU 逐步執行發生,CPU 速度可能會增加或減少以節省能源和降低熱度輸出 50 MHz 為小的增量。 相同的非一致的記憶體存取 (NUMA) 節點內的 CPU 並不會獨立調整頻率。下表說明了 CPU 踏腳變更可能會如何影響執行時間的計算。 摺疊此表格
在這個範例使用 200 或 100 的頻率值時,會發生下列時間計算:
如果這項計算中使用的 RPC: 已完成 追蹤事件、 工期 及 結束時間 資料行所報告不正確。RPC: 已完成 事件擷取起始牆時鐘時間和 CPU 刻度計數。 若要取得更高解析度計時非 Windows 在 SQL Server 2005、 工期 及 結束時間] 資料欄在 SQL Server 提供追蹤是由使用 24 小時制的 CPU 滴答計數計算。結束時間] 資料行的計算方式是將 [開始時間] 資料行中加入 持續時間 資料行。 在這個範例 結束時間] 資料行的計算方式是不正確地新增 2.5 毫秒或 5 毫秒來開始時間。 三藏三藏是在 CPU 的時鐘值分歧。 多處理器的系統可能會產生相同的點不同的 CPU 時鐘值的時間。 雖然不常見,CPU 可能會遇到經過一段時間的時鐘分離。下列範例會示範如何三藏變更可能會影響 SQL Server 追蹤中的 [工期] 資料行的結果。 此範例假設 CPU 頻率會保持穩定在 200 刻度每毫秒數。下表說明了此案例中的事件。 摺疊此表格
不過,批次執行遭到中斷有些時候,SQL Server 傳送批次執行至暫止佇列。當 SQL Server 會傳送一次服務至可執行佇列此批次的 SQL Server 背景工作執行緒時,Windows 發送執行緒來執行第二個 CPU (CPU 2) 上。 SQL Server 背景工作執行緒完成 CPU 2 上執行。 因為的 CPU 三藏 CPU 2 從擷取結束刻度值是 1900 代替 900。 如果您啟用 SQL Server 處理器相關性,您可以避免這種行為。 在這個範例中使用下列時間計算:
以指出先前所述之效能輸出可能不可靠的 SQL Server 2005 就會加入三藏警告訊息。在某些發現的情況下 SQL Server 2005 SP2 可能會報告有關下列的警告訊息:
您可以使用追蹤旗標 8033 (–T8033),若要回到 [報告行為在原始發行版本的 SQL Server 2005 和 SQL Server 2005 SP1 中。原始發行版本的 SQL Server 2005 和 SQL Server 2005 SP1 並不會報告三藏警告訊息。如果您正在執行原始發行版本的 SQL Server 2005 或 SQL Server 2005 SP1 沒有問題,您通常可以忽略該郵件。 為什麼 WAITFOR 延遲陳述式運作正常? 定期的系統處理程序呢?逾時機制不會受到高解析度的設計。SQL Server 並不使用計時器活動高解析度的計時器。 某些逾時的活動都是以使用 GetTickCount 函式在降低的解析度計時器為基礎。這些逾時活動包括鎖定逾時、 延遲 WAITFOR 陳述式和死結偵測。如需詳細資訊按一下 [下面的文件編號,檢視 「 Microsoft 知識庫 」 中 「 文件]: 938448?
(http://support.microsoft.com/kb/938448/
)
如果伺服器使用雙核心 AMD Opteron 處理器或多重處理器 AMD Opteron 處理器 Windows Server 2003 架構的伺服器可能會遇到的時間戳記計數器三藏 895980?
(http://support.microsoft.com/kb/895980/
)
使用 QueryPerformanceCounter 函式的程式可能會不佳執行,Windows Server 2003 中和在 Windows XP 中 在本文所討論的協力廠商產品是由 Microsoft 以外的公司所製造的。Microsoft 不保證,暗示或其他有關這些產品的效能或可靠性。這篇文章中的資訊適用於:
機器翻譯重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。 按一下這裡查看此文章的英文版本:931279?
(http://support.microsoft.com/kb/931279/en-us/
)
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。 | 其他資源 其他支援網站社群立即取得協助文章翻譯
|






Windows Live
Facebook
Twitter
Linkedin
Digg it
Yahoo
Delicious
StumbleUpon
Yammer
Reddit
Technorati
FriendFeed
Email


回此頁最上方
