下面先用一幅圖描述一下有哪些步驟和順序數據庫
一、識別瓶頸服務器
識別瓶頸的緣由包括多個方面,例如,資源不足,須要添加或升級硬件;網絡
工做負荷在同類資源之間分佈不均勻,例如,一個磁盤被獨佔;資源發生故障;資源配置不正確等併發
可能存在瓶頸以及對系統的影響數據庫設計
可能的瓶頸方面工具 |
對服務器的影響性能 |
內存使用優化 |
分配內存不足或SQLSERVER使用內存不足致使性能降低spa |
CPU使用率設計 |
長期的高CPU使用率可能代表TSQL查詢須要優化或CPU須要升級 |
磁盤輸入/輸出I/O |
能夠優化TSQL查詢以減小沒必要要的I/O(例如:使用索引) |
用戶鏈接 |
可能有太多用戶同時訪問服務器,從而致使性能降低 |
阻塞鎖 |
應用程序設計不合理阻塞妨礙併發,帶來更長的響應時間 |
二、監控級別
SQLSERVER提供了多種性能監控工具,能夠使用他們來仔細檢查性能的不一樣方面,以不一樣的細緻程度幫助用戶肯定故障區域,
逐級逐步找到影響性能的最大因素
(1)系統級監控 --應當首先查看系統級信息,確認系統資源(硬件)、網絡體系結構對性能的影響,能夠使用Windows應用程序日誌,
Windows系統監視器進行監控
(2)數據庫級監控 --在進行系統監控後,還須要監控數據庫活動。使用SSMS中的活動監視器、SQLSERVER事件探查器和系統存儲過程監控鎖、
用戶鏈接數目
(3)客戶端應用程序監控 --最後,仔細檢查和評估特定的查詢的性能。使用SQL profiler 和系統視圖檢查對索引的使用狀況、
查詢所需CPU時間和磁盤I/O操做
三、創建性能基線
當肯定了性能監控中所涉及的資源、負載和目標後,開始進行監控,並創建性能基線與當前服務器性能進行比較。
性能基線是一個保證系統正常操做性能範圍值,達到或超過這個範圍,系統性能可能會顯著降低。
應該對接近或超過性能基線的數字作進一步調查找出緣由監控的週期是一段時間,而不是一兩天。
其中應該包括數據庫活動的峯值時間和非峯值時間,數據查詢和批處理命令的響應時間、數據庫備份和還原所需時間
創建服務器性能基線後,將基線統計與當前服務器性能進行比較。對高於或遠低於基線的數字須要作進一步調查。
他們可能代表有須要調整或從新配置的區域。例如,執行一組查詢的時間增長,檢查這些查詢以肯定可否從新編寫他們,
或者是否添加統計信息或索引
四、確認用戶活動
監視用戶活動有助於肯定趨勢,例如,用戶運行的事務類型,運行的低效即席查詢的數量和佔用資源最多的事務類型。
若要收集有關用戶的統計信息,請使用SQLSERVER PROFILER 或系統監視器SSMS活動監視器用於對SQLSERVER進行即席監視,
從而肯定用戶在系統中的活動
五、隔離性能問題
一般同時使用多個SQLSERVER或Windows工具比一次只用一個工具隔離數據庫性能問題更有效。
例如,圖形執行計劃功能(也稱爲「顯示計劃」)能夠迅速識別單個查詢中的死鎖。
然而,若是同時使用SQLSERVER和Windows的監視功能,將更容易識別某些其餘性能問題
經過對這些工具的靈活運用進行逐個性能問題的排查,而不是同時開啓SQL PROFILER 和Windows性能監視器
經過工具可以監控與應用程序有關的問題包括:
(1)SQLSERVER存儲過程或用戶提交的TSQL語句
(2)用戶活動(如阻塞或死鎖)
(3)硬件活動(如磁盤使用)
(4)應用程序開發錯誤
(5)硬件錯誤(如磁盤錯誤,網絡錯誤)
(6)因爲數據庫設計不正確致使過多阻塞
---------------------------------------------------華麗的分割線-------------------------------------------------------
Windows性能監視器:perfmon.exe
SQLSERVER PROFILER
SSMS
若有不對的地方,歡迎你們拍磚o(∩_∩)o