sqlserver效能調優方法論與常用工具,sqlserver調優
早期的文章中,曾經提到過效能調優中的DETECT方法論,這裡先簡單回顧一下DETECT方法論。
Discover the problem :發現問題
Explore the conditions:探究原因
Track down possible approaches:提供可能解決的方式
Execute the most likely approach:執行最好可能的解決方式
Check of success :確認是否成功(如果沒有成功,反覆執行上面的步驟)
Tie up loose ends :完成剩餘工作
首先看 Discover ,發現問題
是否已經簡潔的描述了整個問題?
使用者當前的基準在哪裡?
使用者期望的是什嗎?
並不是所以的問題都可以解決的
再看Explore,探究原因
取得證據
- SqlProfiler跟蹤 /Sql Trace
- DMV 和 DMF
- ShowPlan執行計畫輸出
- 各種系統的效能計數器
- sqlserver特有的效能計數器
檢查最明顯的問題(探究問題先不要深入)
Track down 提供可能的解決方式
第一階段,建立證明假設的計劃
第二階段,建立解決問題的計劃
執行最有可能的解決方案
第一階段,執行測試計劃來證明你的假設
第二階段,執行問題的解決方案
Check,確認成功與否
第一階段
你的計劃證明了你的假設,還是推翻了他?
第二階段
- 你的計劃是否改變了現象?
- 瓶頸是否轉移了?
- 解決方案是否符合你原先的目標?
記住:該過程通常是遞迴反覆執行的
Tie up 完成剩餘工作,收尾
- 效能調優是否達會有無法預計的邊際效應?
- 所做的修改是否真正解決了問題,會不會短時間又碰到相同問題?
- 還需要做哪些跟蹤的工作?
上面說了那麼方法論,雖然很枯燥,但是還是有指導意義的。下面來點實際的知識。
瓶頸分析
瓶頸的定義
瓶頸=需求達到的速率>實際處理量
流程:
- 決定是卡在哪一個點上
- 決定在隊列中等待的狀況
- 減少輸入(需求達到的速率)或是增加同時的處理量
- 決定收益
- 決定成本
常見瓶頸的監視任務
- 監視記憶體佔用
- 監視線程和CPU使用
- 監視硬碟IO
- 監視低效能查詢
- 監視預存程序、sql和使用者活動
- 監視當前鎖定和使用者互動
建立效能調優的計劃
效能調優是反覆的過程,一而再,再而三的迴圈,一次又一次趨近的修正,要利用文字記錄以說明
- 理出頭緒,突顯問題並證明
- 系統的逼近目標
- 有共識,知道彼此談論的標地
- 能夠匯總比較
- 當系統出現的多個瓶頸,找出最關鍵的,成本最低的先執行調優
執行效能調優的計劃時,要確定對線上生產環境的影響
方法論--縮小
效能調優中常用的工作
- windows事件檢視器
- windows系統監視器
- SSMS中的當前使用中視窗
- T-SQL工具
- Sql Profiler
- 查詢分析器
- Database Engine Tuning Advisor
windows事件檢視器,主要是查看以下的事件記錄
- windows應用程式記錄檔
- windows系統日誌
- windows安全日誌
windows系統監視器能夠跟蹤:
- sql server I/O
- sql server 記憶體
- sql server使用者
- sql server 鎖
- 複製活動
SSMS中的活動監視器:
- 活動使用者任務
- 資源等待
- 資料檔案I/O
- 耗費大量資源的查詢
T-SQL工具:
- 系統預存程序
- 全域變數
- T-SQL語句
- DBCC
- 跟蹤標記
- DMF/DMF
Sql Profiler,跟蹤並捕獲sqlserver事件
- 選擇需要跟蹤的事件
- 選擇跟蹤模版
- 選擇需要捕獲的資料
- 有意義對資料進行分類
查詢分析器
- 顯示查詢執行計畫
- 顯示伺服器跟蹤
- 顯示伺服器端統計資訊
- 顯示用戶端統計資訊
Database Engine Tuning Advisor