2015年7月3日 星期五

使用SQL Nexus進行SQL Server完整效能資訊收集與分析

        所謂工欲善其事、必先利其器,當系統發生問題時,如何完整的收集系統問題,並且可以將資料提供給其他的專家進行分析,其實當微軟的SQL Server專家在進行資訊收集時也會透過此工具進行,並進行分析,所以 "非常強烈" 的建議大家使用此工具進行,一來可以盡可能的收集完整的資訊於問題發生的過程中,二來又可以進行自動分析,而且此軟體完全免費,所以此篇我們就來詳細的介紹如何進行。

工具下載:
SQL Nexus Tool
http://sqlnexus.codeplex.com/releases/view/119562

下載後,你會發現有二個主要的資料夾,分別是 DataCollectors 與 SqlNexus4.0.0.64兩個資料夾,DataCollectors主要進行收集,而SqlNexus則是進行資料分析用,首先我們就先進行資料收集的動作。

收集主機資訊:
主機名稱:SQL2012-MAIN
版本:SQL Server 2012
是否為Cluster:否

資料收集:
在DataCollectors目錄中有從SQL 2005 ~ 2014中各個版本的收集腳本,由於我們目前要收集的版本為SQL Server 2012,所以我們先將DataCollectors目錄中的PerfStatsScript2012.zip的壓縮檔解壓縮並放置到SQL Server主機上,然後開啟一個DOS視窗後, 輸入 "StartSQLDiagTrace2012.cmd" 後即可進行收集,如下圖所示。

重點提示:
1、路徑中不要包含有中文名稱。
2、路徑最好不要過長。
3、收集的過程中會稍為的影響系統的運作,可能約5~10%左右,所以進行時請特別注意。
4、收集時最好在問題發生的區段間進行,且最好收集30分鐘。
5、收集完成後,會將檔案輸出在相同目錄中名為 "SQLDiagOutput" 的資料夾。
6、如果要進行結束時,請直接按Ctrl + C即可進行結束。


資料分析:
在使用SQLNexus的程式進行分析前,請先安裝並確認下列的項目是否符合。

先行需求項目:
1、.NET framework 4.0 is required.
2、If you are on SQL 2008 or 2008 R2, you must install report viewer control 2010. If you are on SQL Server 2012, you can skip this step
3、You must install a ReportViewer.exe hotfix. Otherwise, drill-through link won't work.
4、You must install RML Utilities.

接下來我們要將收集到的資料匯入到資料庫後,並透過SQL Nexus進行分析,首先我們先進入SqlNexus的目錄中,然後請一定要以 "Run as Administrator" 的方式啟動sqlnexus.exe的程式

啟動程式後,需選擇你的資料要匯入到那一台的資料庫上,匯入的資料庫與收集的資料庫可以是不同台。

如果你遇到下列的錯誤訊息時,代表你沒有安裝RML Utilities.的套件,請再執行一次並重啟程式。

錯誤訊息:
[sqlnexus.fmNexus.fmNexus.Load] Unable to locate readtrace. Nexus wan't be able to load or analyze profiler trace data.


程式啟動後,請選選擇右上角要匯入的資料庫名稱,預設為 "sqlnexus" ,由於匯入後會進行覆寫,所以請選擇一個資料庫進行匯入,然後再選擇 "Import" 進行匯入。


匯入完成後即會如同下列的畫面。

匯入後,請選擇左上角的 "SQL Perf Main" ,即可發現此工具已完成資料剖析的動作,接下來我們來逐一看看所有的功能。

第一個 "ReadTrace Reports" 此報表會顯示收集的區間中SQL語法執行的活動量。


再點選 "Unique Batches" 後,你可以看到主要有四個區塊,分別是CPU、執行時間、讀取、寫入的統計,而下方也可以看到分別是排行的SQL語法。

Blocking and Resource Wait Statistics的分析。

SQL Server瓶頸分析

其中我覺得非常好用的是此程式可以幫你找出Missing Indexes的部份,並且直接的幫你產生語法,你只需要將語法貼到SQL Server上,即可立即產生相對應的語法。

最後在匯入的過程中可能會有某個檔案造成匯入失敗,你可以將此檔案先行移走,即可匯入完成,此時這個檔案你就必須透過人工的方式進行分析,我將重要的檔案說明整理如下,再請參考。

檔案介紹:
1、SQL Server Log、系統資訊、效能收集
xxx__sp_sqldiag_Shutdown.OUT
xxx__SQL_2012_Perf_Stats_Snapshot_Shutdown.OUT
xxx__SQL_2012_Perf_Stats_Snapshot_Startup.OUT
xxx__SQL_2012_Perf_Stats_Startup.OUT

2、事件檢示記錄
xxx_application_Shutdown.CSV
xxx_security_Shutdown.CSV
xxx_system_Shutdown.CSV

3、SQL語法收集
xxx_SQLDIAG__sp_trace.trc
xxx_SQLDIAG__sp_trace_blk.trc

4、OS系統效能收集
SQLDIAG.BLG

5、程式收集過程記錄
Internal -> ##console.log  

上述中xxx代表你的主機名稱

關鍵字:SQL ServerSQL NexusData CollectorPerformance Tuning

沒有留言:

張貼留言