背景:
SQL Server性能和優化是我們經常討論的一個話題,也是要經常面對的一個問題,當SQL Server大型數據庫遇到性能瓶頸時,我們不得不查找原因,分析問題,解決問題。
在處理性能問題時,數據庫專家傾向於關注系統的技術層面,如資源隊列、資源利用率等。而一般用戶只把性能問題簡單地認為是等待時間,他們發出一個請求,然后等待返回結果。用戶通常認為在交互請求后,超過三秒才得到響應,就算存在性問題了,他們並不關心平均每個磁盤轉軸上有多少命令在待,或者緩存命中率(cache hit ratio)是多少,也不關心阻塞、CUP利用率、緩存中數據頁的平均停留時間(page life expectancy)等。他們只關心等待時間,這正是優化性能應該着手的地方。
SQL Server 2008引入的數據收集器組件正用來分析以上問題,本篇不討論各種優化方式,僅認識數據收集器和使用方法。
數據收集器簡介:
SQL Server 2008引入了一個稱為數據收集器(data collector)的組件,用於從多種來源收集不同類型的數據(性能方面的數據或其他數據),並將這些性能信息保存在稱為管理數據倉庫(management data warehouse)的關系數據庫中。
數據收集器會安裝三個系統數據收集組(system data collection set),分別用於收集磁盤使用情況、服務器活動、查詢統計信息。新的數據收集平台可以幫助你自動收集性能和其他信息,也可以通過預先配置的報表,以圖表方式對數據進行分析。
通過以上簡單介紹,不難看出里面提到到幾個核心的東西,即【數據倉庫】【數據收集】【統計分析報表】。要得到各種數據,需要有地方來存儲,以備后期分析報表,這就需要數據倉庫。有了數據倉庫還需要設置數據收集過程,如收集頻率等等,這就是數據收集。數據已經收集到了數據倉庫,需要通過分析報表查看分析結果,以便於進一步對症下葯。說了這么多,還是先動手從實例中體驗結果。
配置管理數據倉庫
首先要確保SQL Server代理要啟動,然后實例上 -> 管理 -> 數據收集 -> 配置管理數據倉庫
配置承載數據倉庫的實例及數據庫:
圖例:
繼續下一步,直到完成。
配置當前數據庫做數據倉庫的監視對象:
上一套配置步驟已經准備好了承載數據倉庫,現在就要將當前的實例綁定到以上數據倉庫。下面同樣使用以上向導,但選項不同。
圖例:
繼續下一步,直到完成。
到此數據倉庫和數據收集創建完成,將看到下圖的狀態。
通過以上步驟自動創建的三個數據收集組,各數據收集組有默認的屬性,比如數據倉庫中的數據保留時間,數據上載計划等。數據上載計划帶有一些默認的值,如每小時自動上載一次,每10分鍾自動上載一次...也可以自定義,按照這些時間點,當前實例的系統性能數據自動上載到數據倉庫中。看如下圖:
通過報表結果能看出哪些等待類別、哪個時間點占用資源最高,比如通過柱狀圖能分析出占用資源的系統類型和高峰期等。對於三種數據收集組的數據詳細的結果,我正在進一步研究,計划專門寫篇博文分析介紹詳情。
MSDN:http://msdn.microsoft.com/zh-cn/library/bb677356.aspx
動態管理視圖(DMV)sys.dm_os_wait_stats
也可以通過動態管理視圖(DMV)sys.dm_os_wait_stats,查出各等待類型。
它包含以下屬性:
wait_type 等待類別。
waiting_task_count 表示該類待的數量。
wait_time_ms 以毫秒為單位的該類等待的總等待時間(該時間包含signal_wait_time_ms)。
max_wait_time_ms 最大等待時間。
signal_wait_time_ms 它是正在等待的線程從收到信號通知到其開始運行之間的時差。
注:對於SQL Server之前的版本沒有數據收集器組件,也可以通過此DMV查詢分析相關值。
此文對自己算是一個小的總結和筆記,對不熟悉的博友算是一個介紹,對於非常了解的高人還望不吝賜教,謝謝!