close

最近在調校客戶的效能過程中,重新接觸到了MS SQL Profiler,以前曾經有稍微摸索過,但卻不深入,這次打算趁這機會更深入的學習這款工具,其實這工具可以說是簡單易學卻很實用的工具,調校SQL指令的效能可少不了它。

這工具主要的目的是針對目前SQL Server中所有使用者的交易情形,進行監視並留下記錄,記錄的內容包含所下的SQL 指令及所花費的時間、LOCK的狀態、登入的狀況…等種類,可以看的資訊還算蠻多的呦。因為很要看的資訊很多,所以必需依實際使用的狀況篩選自己想看的資訊,否則在進行記錄時可是會因為記錄的資訊太多,而大量得佔用硬碟空間喔!! 我就曾經在客戶那邊僅錄製了10分鐘的交易記錄,結果交易記錄檔就有 5xxMB左右的經驗喔

          追蹤執行SQL指令耗用時間簡易版

首先,是新增一個追蹤並輸入待追蹤得SQL Server連線資訊

image

按〔確定〕後,如下圖,將「儲存至檔案」選項打勾,並設定 20MB (建議值),這代表如果儲存的檔案超過20MB時會切割成0980701_1.trc,0980701_2.trc…等以此類推,每20MB切一個檔案。 「啟用追蹤停止時間」的意思是,當你開始追蹤後,到所設定的時間系統會自動停止追蹤,這個選項請依實際狀況調整。

image

 

點擊〔事件〕頁籤,如下圖,可看出可查看的事件很多,在此請盡量縮短,因為我們只要看SQL所耗用的時間,所以「TSQL」內我只設定了「SQL:StmtCompleted」 ,因為一個SQL的經過週期是在整個SQL執行結束後才會計算出來,所以這邊只設定顯示出SQL執行結束後的狀態。

為了瞭解目前剛開始追蹤時就已存在了哪些連線,所以我將「工作階段」內的ExistingConnection顯示出來,這個選項選取後,剛開始追蹤時只會列在起始的地方,並不會影響到後續追蹤。

接著為了要追蹤呼叫到預存程序時所耗用的時間,所以特別將「工作階段」內的「RPC:Completed」加入,這是為了觀察當SQL呼叫預存程序後的總消耗時間。

 

image

「資料行」頁籤,如下圖,這邊我只選了幾個我要的供大家參考,可自行調整。

EventClass : 就是目前發生「事件」的種類(例:SQL:StmtCompleted)

Duration: 執行花費的時間,以毫秒為單位。

TextData:相關的SQL指令會顯示在此欄位中。

StartTime:SQL指令執行的起始時間。

EndTime:SQL指令執行的結束時間

ApplicationName: 應用程式的名稱,可以很清楚的看出是透過哪個程式執行的

SPID: 使用者的連線ID。

 

image

「篩選器」頁籤,如下圖,我這邊做了一些過濾,這邊只設定 5000毫秒(5秒),凡超過(含)五秒的SQL才會被記錄。

image

經過上面的重點設定後,我又拿這個設定的範本,到我上次我錄了10分鐘就5XXMB 同一家客戶的SQL Server上進行錄製,檔案大小縮減了非常的多,錄了一天才佔用了2MB左右,以下是錄製的部分結果畫面,由結果中我找出了一個SQL足足跑了1080秒(約18分鐘),進而對其進行了初步檢視與調整,當然這也有可能是因為被別人Lock鎖定導致。

image

當所有的設定都完成後,也可以將現成的設定儲存成範本,供下次使用,這樣就不用每次重新設定,如下圖,點擊【檔案】->【另存新檔】->【追蹤範本】。

image

下次新增追蹤時就可以讀取先前存的範本,如下圖,點選「一般」並透過「瀏覽資料夾」鈕,選擇上次儲存的範本。

image

arrow
arrow
    全站熱搜

    貓肥熊(胖達師) 發表在 痞客邦 留言(1) 人氣()