Sql-Server

關於信號等待百分比的說明

  • January 8, 2018

我的信號等待百分比很高,而我們其中一台伺服器的 CPU 使用率非常低。

我在網上瀏覽了許多關於 Signal Waits 的文章,並了解到這是花費在可執行隊列上的時間,但是我仍然很難理解為什麼 CPU 使用率保持如此低 (25%) 而 Signal Waits 的百分比很高(75-90% 的範圍。)

如果會話正在等待可用的 CPU 來執行它,為什麼 CPU 使用率如此之低?

不要用百分比來調整。您的伺服器將始終有 100% 的等待時間 - 但可能不會有太多負載。您的伺服器就是典型的例子。

假設您每小時只執行 1 個查詢。所有查詢的數據都已經記憶體在記憶體中,沒有其他人競爭鎖。該查詢中有幾個並行任務,它們都需要獲取 CPU 時間。

該查詢只會工作一段時間,然後完成。如果您查看信號等待,它可能看起來有 90-100% 的時間,當它等待時,它正在等待上 CPU。但它只是沒有等待那麼多。

相反,請查看每個核心、每秒(或每小時)的等待時間,如下所述:

https://www.brentozar.com/archive/2015/03/how-to-measure-sql-server-workloads-wait-time-core-second/

(免責聲明:我寫的。)這樣,您可以查看伺服器是否真的在做任何工作。我敢打賭你的伺服器,你每小時只需要等待幾分鐘——這意味著,你根本不需要費心調整整個伺服器。這並不意味著每個 QUERY 都很快——它只是意味著你不能進行伺服器級調整,你必須切換到查詢級調整。(你必須問為什麼查詢慢,而不是問為什麼伺服器慢。)

引用自:https://dba.stackexchange.com/questions/152838