SQL Server 效能最佳化之Perfmon指標
Perfmon是Windows系統效能監控程式。用於監視CPU使用率、記憶體使用量率、硬碟讀寫速度、網路速度等。
Processor/%Privileged Time
閥值:如果數值持續大於75%就表示存在瓶頸。
含義:這個計數器表示一個線程在特權模式下所使用的時間比例。當你的程式叫用作業系統的方法(比如檔案操作,網路I/O或者分配記憶體),這些作業系統的方法是在特權模式下啟動並執行。
Processor/ %UserTime
與%Privileged Time計數器正好相反,指的是在使用者狀態模式下(即非特權模式)的操作所花的時間百分比。
Process(sqlservr.exe)/ %Processor Time
SQLServer進行的CPU使用方式
Processor/% Interrupt Time
閥值:取決於處理器
含義:這個計數器表示處理器接收處理硬體中斷所使用的時間比例。這個值間接指出產生中斷的硬體裝置活動,比如網路變化。這個計數器顯著增加的話表示硬體可能存在問題。
System/Processor Queue Length
閥值:平均值持續大於2那麼表示CPU存在瓶頸
含義:如果就緒的任務超過處理能力線程就會被放進隊列。處理器隊列是就緒但是未能被處理器執行的線程的集合,這是因為另外一個線程正在執行狀態。持續或者反覆發生2個以上的隊列則明確的表示存在處理器瓶頸。你也能通過減少並發取得更大的輸送量。
你可以結合Processor/% Processor Time來決定增加CPU的話你的程式是否能夠受益。即使在多處理器的電腦上,對於CPU時間也是單隊列。因此,在多處理器電腦上,Processor Queue Length (PQL)的值除以用來處理負載的CPU個數。
如果CPU非常忙(90%以上的使用率),PQL的平均值也持續大於2/CPU, 這是應該存在CPU瓶頸而且能夠從更多的CPU中受益。或者,你可以減少線程的數量以及增加應用程式層的隊列。這會引起少量的Context Switching,但是少許的Context Switching對於減少CPU負載是有好處的。PQL大於2但是CPU使用率卻不高的的常見原因是對CPU時間的請求隨機到達而且線程卻從處理器申請到不對稱的CPU時間。這意味著處理器並不是瓶頸,而你的線程邏輯是需要改進的。
SQLServer:SQL Statistics/Auto-Param Attempts/sec
每秒的自動參數化嘗試數。 其總數應為失敗的、安全的和不安全的自動參數化嘗試之和。 當 SQL Server 執行個體嘗試通過將某些文字替換為參數來參數化 Transact-SQL 請求時,就會進行自動參數化,這樣可以對多個相似的請求再次使用儲存在緩衝中的執行計畫。 請注意,在更新版本的 SQL Server中,自動參數化也稱為簡單參數化。 此計數器不包括強制參數化。
SQLServer:SQLStatistics/Failed Auto-params/sec
每秒自動參數化嘗試失敗次數。 該值應很小。 請注意,在更高版本的 SQL Server中,自動參數化也稱為簡單參數化。
SQLServer:SQLStatistics/Batch Requests/sec
每秒收到的 Transact-SQL 命令批數。 這一統計資訊受所有約束(如 I/O、使用者數、快取大小、請求的複雜程度等)影響。 批處理請求數值高意味著輸送量很好。
SQLServer:SQL Statistics/SQLCompilations/sec
每秒的 SQL 編譯數。 表示編譯代碼路徑被進入的次數。 包括 SQL Server中語句級重新編譯導致的編譯。 當 SQL Server 使用者活動穩定後,該值將達到穩定點。
SQLServer:SQL Statistics/SQLRe-Compilations/sec
每秒語句重新編譯的次數。 計算觸發語句重新編譯的次數。 一般來說,這個數值最好較小。
本文永久更新連結地址:https://www.bkjia.com/Linux/2018-03/151203.htm