你可以使用SQL服務器調節器(SQL Server PRofiler)工具來收集服務器當前活動的重要信息。被這個Profiler工具所追蹤到的信息(包含有數據庫的真實負載)能夠被用在多種場合里。現在讓我們來看看如何使用Profiler收集能夠被索引調節向導所使用的數據,以及你該如何使用這些工具來調試你的應用程序。
什么時候使用它?
Profiler工具能夠用在數據庫開發生命周期的所有階段。例如,在初始階段,你可以用它來輔助調試或者查明你的應用程序應該如何以及在何時調用存儲過程和其他的SQL聲明。在我最近所參與的一個項目里,一個已編譯組件一調用數據庫就超時,在這種情況下,我們使用了Profiler來辨別SQL的聲明和應用程序調用它們的順序。使用這個工具就幫助我們發現了邏輯上的錯誤,這樣我們就成功地更正了自己的應用程序。
在開發過程后面的階段里,Profiler能夠有助于辨別負載/壓力測試(load/stress testing)過程中應用程序的瓶頸。你還可以用它來監視日常的活動、執行安全審查,以及辨別其他影響性能的因素(例如設計不佳的查詢)。
在Profiler里,你必須決定要記錄什么,并考慮將所記錄下來的服務器活動應該被保存在哪里。你可以選擇將自己的追蹤信息保存到數據庫表格里或者是文件里。當選擇將捕捉到的數據保存到表格里的時候,你還可以設置要保存數據行的最大數量。這樣,Profiler就能夠在一個任務繁重的系統里迅速地捕捉大量數據。但是由于這一點,你可能想要限制在一次追蹤之中Profiler所要捕捉的數據總量。
你可以選擇將所獲得的信息保存到追蹤文件里。如果選擇了這個選項,你就能夠在文件達到了一定的大小之后將文件信息覆蓋掉,這將限制捕捉信息文件大小的上限。而且,你可以選擇要從哪里開始進行追蹤處理。這就非常像在應用程序層里編寫代碼選擇是在客戶端還是在服務器端進行指針執行。在正式的產品系統里,你可能不希望在服務器上放上這么一個工作負載,這樣的話,讓客戶端處理可能就是最好的選擇了。
當在這兩個選項之間進行選擇的時候,你的主要注意力應該放在其對數據庫/應用程序性能的影響上。對于大多數類型的日志記錄工作而言,將其保存為文件對系統的負擔要比保存到數據庫的小,所以對于高流量的實際產品系統來說,將日至保存為文件可能是更好的選擇。
使用Profiler
你可以使用Profiler創建和保存能夠被索引調節向導所使用的追蹤結果。為了使用Profiler為向導所收集到的數據,你可以選擇SQL服務器自帶的缺省模板。要做到這一點,在文件(File)菜單里選擇新建|追蹤(New | Trace)。在常規(General)選項卡里(圖A)選擇用于向導的缺省模板。你就會看到可以將追蹤結果保存為文件或者到數據庫里。
圖A
Profiler的常規選項卡
在事件(Events)選項卡里(圖B),和向導相關聯的事件類型有兩個:RPC:Completed用于存儲過程,以及SQL:BatchCompleted用于其他的TSQL聲明。
圖B
Profiler的事件選項卡
在使用調節器對SQL服務器的活動進行捕捉的時候,你會在一段相對較短的時間內獲得大量的數據,這取決于你服務器的使用情況。所以你就應該選擇只記錄下你所需要的項目而不是修改缺省的模板。而且在運行Profiler的時候,你要確保在捕捉期間典型的應用程序活動會發生,這對于保證索引調節向導的質量是非常重要的,除非你是正在試圖解決某個特定的問題,在后面這種情況下你要確信指定的事件正在發生。
一旦追蹤被保存到文件里或者數據庫表格里,你就可以回放這一過程中所發生的所有活動——設置你希望的斷點——這和你使用開發人員的IDE調試器很類似,如圖C所示。
圖C
回放Profiler的追蹤內容
再次強調,捕捉到的數據會是相當多的。為了幫助限制所捕捉數據的數量,你可以定義過濾器。在定義自己的過濾器(圖D)時,設置時間較長的查詢是很常見的。
圖D
過濾數據
Profiler還能記錄許多其他類型的數據庫活動。Profiler本身就有許多選項供你選擇。要獲得更多的信息,我建議去查詢MSDN在線或者SQL服務器的文檔。Profiler會成為任何DBA的朋友,另外我還建議你去考察一下它的其他許多選項。
新聞熱點
疑難解答