說道SQL Server Profiler,相關很多朋友們都已經不陌生了。雖然說現在在網絡上有很多的文章介紹它的使用,但是介紹的都不怎麼系統與完整。因為筆者對SQL Server Profiler的使用也有些年了,並且常常在性能優化中使用,所以,借此機會,獻出一整個介紹SQL Server Profiler的系列文章。
可以說說SQL Profiler是一個非常強大的工具,使用它,我們可以捕獲和分析數據庫中發生的相關的事件,例如,存儲過程的執行等。而捕獲的信息可以為我們在性能診斷中提供依據。
如果你對SQL Profiler不是很熟悉,那麼,本篇文章將會帶著你一步步的熟悉。在這篇文章中,我會講述SQL Profiler的工作原理,還會解釋在後面文章要常常要用的一些術語,同時也會講述如何保持一個Profiler Traces跟蹤文件。
通過本篇文章的越多,朋友們會清楚如下的問題:
1.理解SQL Profiler是如何工作的
2.對Profiler的一些術語和概念有一個比較清楚的認識,例如事件,數據列,過濾器等
3.理解如何配置權限啟動Profiler
4.可以創建基本的Profiler跟蹤,並且保存。
在開始學習任何一門技能之前,我們需要知道:為什麼要學習這門技能,學習完了之後,可以給我們帶來什麼好處?畢竟人的精力是有限的,不可能隨隨便便學習一門對自己毫無用處的知識。
可以這樣說:區分一個有經驗的DBA與一個新手DBA的區別就在於:有經驗的DBA知道在核實充分利用何種工具可以快速的將問題搞定(其實我本身也是一個開發人員,通俗點說,就是寫應用代碼的,不算是真正DBA,因為很多的時候,在項目中,沒有DBA,所以不得不扮演很多的角色,所以學習了不少的技能)。
如果熟練的掌握了SQL Profiler之後,有經驗的DBA就可以對數據庫的運行狀況進行跟蹤,並且利用跟蹤的數據進行問題的分析與性能的診斷與優化,有時候,甚至可以再問題還
有發生之前發現潛在的問題。我們把掌握SQL Profiler的好處列下來:
1.可以監視SQL Server內部發生的各種活動:例如發生在數據庫引擎中的活動,發生在Analysis Services以及Integration Services中的活動。
2.監控並且確認某些查詢,事務相關的性能問題等。
3.可以對執行計劃進行分析。
4.可以監視並且確認SQL Server內部的發生的一些錯誤和警告。
5.可以捕獲數據庫發生的數據,並且還可以對數據庫的壓力進行重放。
6.可以對數據庫中用戶的活動進行審計跟蹤。
7.可以通過多種方式對數據進行分析與跟蹤。
8.可以將跟蹤的數據與系統的性能計數器關聯起來,從而更加全面的檢查發生的問題。
9.可以將跟蹤的數據以DTA來進行分析
10.還可以對SQL Profiler進行編程,可以不使用它的GUI工具。
說了這麼多,似乎已經把SQL Profiler說的天花亂墜了!其實SQL Profiler也不是萬能的,也只是在SQL Server診斷與分析中常常使用的一種工具而已,至於決定到底是否在使用它,還是取決於DBA或者技術人員本身,通過本系列的學習,相信大家會有一個比較清楚的認識。
首先,我們來簡要的看看SQL Server Profiler的工作原理。
SQL Server Profiler的工作原理
其實SQL Server Profiler這個工具是SQL Trace的一個GUI的版本,而SQL Trace是一組腳本,自SQL Server 2000就已經有了的,這一組腳本捕獲和跟蹤SQL Server內部發生一些事件,並且將跟蹤的數據保存以便後續使用。
從本質上說,SQL Trace就是一個非常簡單的工具,它的作用就是捕獲客戶端應用與SQL Server之前的通信的信息。它扮演中一個非常特殊的網絡嗅探器的功能,用來捕獲與SQL Server相關的網絡活動,同時也允許我們查看客戶端應用的請求觸發了SQL Server的哪些事件。
另外,與我們熟悉的網絡嗅探器不同的是:SQL Trace只是捕獲發生在SQL Server內的相關的事件和活動,而不會獲取網絡上面傳輸的數據。
為了使得大家對SQL Trace有一個更加清楚的認識,我們來看看下面的一個圖1-1:
那麼對於上面的圖1:
1.SQL Server事件是指由SQL Server本身內部觸發的活動,或者由客戶端與SQL Server進行連接時在SQL Server內部觸發的活動。事件包含很多不同的種類,我們將會在後續文章中詳解介紹。
2.因為事件發生在SQL Server的內部,SQL Trace的任務就是根據Filter來捕獲自己感興趣的事件。
3.一旦事件被SQL Trace捕獲,那麼發生的事件與相關的事件信息就會被保存在內存的隊列中。
4.SMO(Server Management Objects),是可以直接的訪問SQL Server的對象模型。其實,SQL Trace對於我們而言,就可以將之看成是一個黑盒,我們能做的就是通過一些方式和工具去與這個黑盒交互,SQL Profiler和系統的存儲過程就是這樣的工具。
為了後續的理解方便,也為了保證我們的理解一致,我們下面介紹一些常見的概念和術語。