對於查詢調優,你需要的不止STATISTICS IO


在我查詢調優期間,STATISTICS IO會話選項是我的朋友,因為對於指定的查詢,它准確告訴你有多少頁已讀取。每次,SQL Server從緩存池騎牛一個8K的頁,它通過STATISTICS IO的輸出獲得記錄。

通常我會建議啟用STATISTICS IO來更好的理解在給定的查詢里,涉及的表上有多少頁被讀取。而且查詢調優的目標是盡可能減少這些讀取頁數——通過索引策略。對於查詢,你數據讀的越少,查詢就會越快。但今天的問題如下:對於查詢調優,STATISTICS IO有你需要的一切么,還是又你應該知道更多的維度?

我們來談下客戶端統計信息

另一個非常重要的選項——至少從我的角度來看——是SSMS里的客戶端統計信息選項:

當對你的會話啟用這個選項,SSMS會告訴你你的查詢客戶端處理的更多信息。下圖是SSMS里一個典型的輸出結果:

這里SSMS向你展示你的查詢最后一次執行的性能指標。最重要的指標是網絡統計和時間統計。網絡統計信息向你展示下列信息:

  • 服務器往返的次數
  • 從客戶端發送的 TDS 數據包
  • 從服務器接收的 TDS 數據包
  • 從客戶端發送的字節數
  • 從服務器接收的字節數

通常我會留意從服務器接收的字節數,因為用收到的信息,你很容易看到從服務器返回的信息量。當然你的結果集越大,你返回的數據越多,你的查詢時間也會更長。我在客戶這遇到過有返回幾G數據的查詢,他們還在抱怨為什么查詢這么慢,額~~~~~這個……

另外時間統計信息向你展示了下列信息:

  •   客戶端處理時間
  •   總執行時間
  •   服務器應答等待時間

這里最重要的維度是客戶端處理時間,因為它告訴你SSMS本身需要多長時間來處理你的查詢。這里的大部分時間是SSMS用在計算和可視化結果集。同理,結果集越大,SSMS花更多的時間來可視化它,因此查詢時間會更長。

小結

STATISTICS IO是查詢調優的很好開始,另外我也使用來自客戶統計信息的輸出來更好的理解有多少數據在網絡上傳輸,SSMS本身需要花多少時間來處理數據。

因此下次你的查詢慢的時候,你可以使用客戶統計信息來檢查在SSMS里的時間花費。或許查詢本身很快,但是SSMS需要更多的時間。

感謝關注!

原文鏈接

https://www.sqlpassion.at/archive/2017/03/27/do-you-need-more-than-statistics-io-for-query-tuning/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM