SQL Server Performance Dashboard Reports是一組Reporting Services的報表,和SQL Server Management Studio中所介紹的報表一起使用。這些報表允許數據庫管理員快速地確定他們的系統中是否存在瓶頸,瓶頸是否正在發生,捕獲這些附加的診斷數據可能會對解決問題更有幫助。例如,系統正在等待disk IO,這是Dashboard就允許用戶可以快速地查看哪一個session,session中的哪一個查詢計划,查詢計划中哪一條語句最消耗IO。
Performance dashboard可以幫助解決一些普遍的性能問題,包括:
-CPU瓶頸問題(什么查詢最消耗CPU)
-IO瓶頸問題(什么查詢最消耗IO)
-由查詢優化器產生的索引推薦方案(未使用索引)
-阻塞問題
-Latch競爭問題
SQLServer2005的性能工具Performance Dashboard是新添加到SQLServer2005的並在SP2發布之后不久就可用的一款擴展工具。具體的安裝參看 [原]安裝SQL Server 2005 Performance Dashboard Reports的技巧。SQL Server 2008/2008 R2/2012的Performance Dashboard報表可以從這里下載最新的工具包: Microsoft® SQL Server® 2012 Performance Dashboard Reports。
這些捕獲到報表中的信息源於SQL Server的動態管理視圖,它不需要額外的跟蹤或數據捕獲,信息一致可用,所以它是一個不怎么消耗資源的一種管理服務器的方法。
Reporting Services對於使用Performance Dashboard報表並不是必須要安裝的。
1、下載 SQL Server 2008/2008 R2/2012的Performance Dashboard報表: Microsoft® SQL Server® 2012 Performance Dashboard Reports ,安裝后在C:\Program Files (x86)\Microsoft SQL Server\110\Tools\Performance Dashboard 下可以找到setup.sql和相關自定義報表。
readme里頭有安裝的方法,幫助文件里頭有具體的使用方法。
2、開啟SSMS 執行setup.sql
3、選擇自定義報表performance_dashboard_main.rdl,載入后即可看到性能分析報表:
Performance Dashboard不收集也不存儲任何信息,而是從SQL Server內部取出當前存在的數據。正因如此,大量的數據都是從某一特定時間開始的,但是有時,你會看到一些歷史數據,作為副產品來查看SQL Server如何工作。歷史數據很有限,但是很有用,我們之后會提到。
我之所以指出這個原因,是因為你必須手動的刷新Performance Dashboard來獲取你SQL Server最新的活動快照。這也很容易做,只要單擊Performance Dashboard頂端的refresh按鈕就可以了,就像下面這張圖這樣。
現在,我們看看一些Performance Dashboard的主要區域,看看他們能夠告訴我們些什么。主頁面分五大區塊。
1.查看CPU使用率,如果SQL Server CPU使用率長時間超過80%的話,可能須注意是否I/O造成CPU瓶頸(過度switch)。
System CPU Utilization
對於大多數DBA,System CPU Utilization(系統CPU使用率)圖表非常有用。你能看到至少15分鍾的SQL Server的CPU活動情況,從SQL Server啟動開始,每分鍾一次更新。但是,請注意,如果你剛啟動SQL Server的服務,將沒有CPU的活動圖表,因為還未滿15分鍾,15分鍾后,你會第一次看到這些數據。而在這里還想強調的是,CPU的使用率並不是一個精確的數值,而是一個大約值,但是一個大約的值也已經足夠了。在下面的例子中,你會看到一個15分鍾CPU數據,並且每次更新之后,這個圖表依舊顯示的是一段15分鍾長的CPU活動的數據。
Performance Dashboard不僅提供了CPU使用狀況的信息,還提供了許多其他的寶貴信息,我們來繼續看一看。
2.查看目前請求所等待的類型,這里可以看出有那些資源競爭的情況(如果等待時間過長)。
SQL Server每秒執行成百上千的操作,但它們並不是同時完成的。也就是說,許多活動通常都需要短期的“等待”。實際上,SQL Server利用數百種不同的等待狀態來解決它們的復雜性。作為一個DBA,我們的目標是將這種等待狀態最小化。等待狀態越多,或者等待時間越長,性能就會越慢。當等待狀態達到正常值的時候,擴展的等待狀態就不在需要,需要將這些狀態鑒別和更正。
SQL Server利用各種DMV來跟蹤這些等待狀態,有趣的是,SQL Server還能收集一些自上次SQL Server服務重啟開始的一些等待狀態的歷史數據,這些歷史數據和當前的等待狀態信息都是對DBA非常有用的。
在初始的Performance Dashboard屏幕中,你可能會看到下面的圖標。注意,只是“可能”看到。這是因為這個圖表顯示的是Performance Dashboard上次刷新時的當前等待狀態的信息。很可能當時沒有等待狀態,如果如此,那就不會再屏幕中出現這類圖表。
3.查看目前活動相關信息,這里你可以快速看出快取擊中率的數值(建議>90%)。
圖中的User Requests和User Sessions,這些數據都是Performance Dashboard在上次更新時獲取的。另外,elapsed time(消逝時間)和cache hit ratio(緩存觸發率)的值指的是之前的全部完成的請求的消逝時間總和。點擊藍色的User Requests 或 User Sessions你可以看到下拉的信息。當點擊User Requests,你可以看到下圖的信息,顯示出上次更新時的當前用戶請求。(與之前的部分圖一樣,為了省略顯示,這張圖被截斷,真實的圖標有更多的信息。)
當你點擊User Sessions時,你可以看到下列的報表:
這個報表與Management Studio的Current Activity顯示的信息比較相似,但它能提供更多的信息。(同樣,這個報表也是被截斷的,真實的報表比這更長。)
4.查看相關歷史信息,這里的數據我認為相當有價值,可以看出I/O Read/Writes狀況,以及何種等待類型最多。還有可以找出最耗時的查詢(依CPU、運行時間...等)。
雖然Performance Dashboard並不收集歷史數據,但是一些SQL Server的DMV是收集的,我們可以看下圖,這些是利用DMV的數據顯示出的歷史數據:Waits, IO Statistics, 和 Expensive Queries。
Waits
這個報表顯示了一個自SQL Server實例重新啟動開始發生的所有等待狀態的一個歷史數據的快照。
在上述的例子中,我們能看到sleep wait state和this SQL Server實例記錄的Network IO類別的最大等待狀態。如果想查看更多的詳細信息,可以展開這些狀態類別。這些信息都非常強大,它可以幫助我們去確定這種等待狀態是不是對SQL Server的性能有消極的影響。
IO Statistics
這些歷史報表告訴你哪個數據庫最消耗IO,以及一些其他的附加信息。下面的截圖是報表的頂端部分,總結的數據庫的IO情況。
下圖是這個報表的另一個部分,能看查看哪一個對象最消耗IO。另外,如果發現了有出現missing index的情況,你可以下拉報表來查看具體是哪個missing index,這樣就可以把它重新加上。
Expensive Queries
這部分提供了我們在其他查詢報表所看到的相似的信息,但它顯示的是SQL Server中當前被加入緩存的那些查詢語句。這樣我們就能給我們更好的展示,來看我們的服務器究竟發生了什么。有六種不同方式的結果排序選項(每一種都將形成一個單獨的報表)。你也可以下拉查看詳細信息。
5.綜合信息可以快速瀏覽如數據庫總覽、擴充事件..等。
Active Traces
Active Traces鑒別了當前SQL Server實例中所執行的所有trace。即使你不能運行Profiler Trace,你依然可以看到這個active trace信息。為什么呢?這是因為SQL Server一直在自動地為你跟蹤這些事件,當你在這個實力上執行一個Profiler Trace是,你會看到如下的信息。
Databases
Databases的報表提供了一個當前實例中數據庫的快速瀏覽,可以快速查看這些主要數據庫的配置選項。
Missing Indexes
最后一個報表列出了SQL Server所確定的所有missing index。這個分析沒有Database Engine Tuning Advisor所做的那么全面,但它顯示出了明顯的missing index。其實我們只是希望在這個列表中不出現任何的missing index,這代表我們的數據庫設計的更好。
最后提醒一下各位:
這些統計信息的數據源大多來自於 SQL Server 里所謂的 動態管理檢視 ( DMV ),這些信息是從數據庫實體 (Instance) 啟動之后所累積的動態信息,所以 SQL Server 跑得越久,所收集到的信息越精准,也越能找出在啟動 SQL Server 服務之后到現在所累積的效能問題有哪些。
相關文章:
如何在 SQL 2008 安裝 Performance Dashboard Reports
[SQL]SQL Server 2008使用Extended Events SSMS Addin + Performance Dashboard Reports來監看系統
善用Performance Dashboard Reports