2011年11月6日 星期日

SQL Server 效能調整 - 如何整合 SQL Profiler 與 Performance Monitor

        在SQL Server的效能監控上,最常使用的兩個工具就是 [效能監視器] (Performance Monitor) 與 SQL Profiler,但彼此之間有一些較可惜的部份,那就是效能監視器只能看到某時段的某個物件數值異常,如 CPU 使用率過高時,你並無法知道過慢的原因為何,如自行搭配其他的資訊自行交量確認,而另外一提,效能監視器本身在錄製時,消耗的資源非常的少,所以可以長時間的進行系統的監控。

PS:此工具也有進階版的使用方式,可以自動化的建置與透過排程的方式進行控制,詳細請參考我的另一篇文章 [效能監視器的進階應用 - Logman ]。

        而另一個工具就是SQL Profiler,但是此工具錄製完成後,並沒有圖型化的介面,只有單純的SQL語法檢示,所以只能自行分析找出問題,方法上較常見的就是將追蹤資料轉存到資料庫之後,再透過 SQL 語法進行分析,從其中找出 CPU、I/O 使用資源較高的部份,另外也可以找出執行最久的語法,但是此工具錄製時,由於消耗的資源較多,所以較不適合長時間的進行,需指定特定的時間進行,比方說如果問題大約都發生在早上10:00,建議可以在9:30分的時候就先行啟動,然後錄製持續到10:30。

由於兩個工具在使用上各有一些可惜的部份,所以在本篇我們就將此兩個工具進行整合,讓彼此之間的優點互補,提高工具的可用性。

1、效能監視器的設定:

1-1. 點選 [開始] -> [控製台] -> [系統及安全性] -> [系統管理工具] -> [效能監視器]

1-2 . 開啟後,我們要來新增一組監視器進行錄製,點選 [User Defined] ->  [New] -> [Data Collector Set]。

1-3. 輸入此組監視器的名稱,然後選擇 [Create Manually (Advanced)]

1-4. 選擇 [Create data logs] -> [Performance counter]

1-5. 點選 [Performance counters] -> 選擇你需要監控的效能物件,關於 SQL Server 需要設定監控的物件有那些,你可以參考我的另一篇文章 [ [效能監視器的進階應用 - Logman ] 裡面也有詳細的說明。

1-6. 指定儲存的位置。

1-7. 選擇執行身份與  [Save and close] 。

2、設定 SQL Profiler

2-1. 選擇 [開始] -> [程式集] -> [Microsoft SQL Server 2008 R2] -> [Configuration Tools] -> [SQL Server Profiler]

2-2. 選擇 [File] -> [New Trace]

2-3. 連線到你要監控的資料庫

2-4. 選擇範本為 [Standard],並且將監控的檔案選擇儲存的位置,本範列選擇將資料放在檔案中,並設定每個檔案只要滿20MB就會換另一個檔案。

2-5. 由於預設沒有勾選 [HostName],所以先選擇 [show all columns],然後將 [HostName] 勾選起來之後,再將 [show all colum] 勾選取消之後,再點選 [Run] 執行監控。

2-6. 啟動在第一個步驟中設定的 [User Defined]。

PS:[非常重要],2-4與2-5的步驟二個啟動的時間必須不可以差太久,否則兩個檔案在最後的時候會無法進行結合。


3、進行Performance Monitor 與 SQL Profiler的結合。

3-1. 切換到SQL Profiler,先打開在第二個步驟中儲存的追蹤檔。


3-2. 載入SQL Trace檔之後,原本的 [Import Performance Data] 就已經可以選取了。

3-3. 接著再載入第二個步驟中儲存的追蹤檔案。

3-4. 載入後即可選擇在第二個步驟中有儲存的 [Performance Counter],在這邊選擇你全部已儲存的效能監視器的物件。

3-5. 載入後就可以看到兩個程式的合成,合成後,你可以點選中間線條區塊的部份,如此你就可以看到自動會切換到相對應的SQL語法,如此就可以有效的找出有問題的區塊,也藉以加強兩者之間工具的使用性。

關鍵字:SQL ServerSQL ProfilerPerformance Monitor效能監視器

1 則留言:

  1. 請問如果把 Performance Counter使用SQL Server的格式 記錄到 SQL Server裡面, 要如何在Profiler Import進來??

    回覆刪除