全面掌握SQLServerProfiler原理與相關(guān)概念_第1頁
全面掌握SQLServerProfiler原理與相關(guān)概念_第2頁
全面掌握SQLServerProfiler原理與相關(guān)概念_第3頁
全面掌握SQLServerProfiler原理與相關(guān)概念_第4頁
全面掌握SQLServerProfiler原理與相關(guān)概念_第5頁
已閱讀5頁,還剩9頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、全面掌握SQL Server Profiler:原理與相關(guān)概念本系列文章將圍繞SQL Server Profiler進行,今天將是系列文章的第一篇原理與相關(guān)概念介紹 【51CTO獨家特稿】作者簡介:汪洋(Richard Wang),資深架構(gòu)師和.NET技術(shù)專家。一直戰(zhàn)斗在一線,實踐經(jīng)驗極其豐富?,F(xiàn)就職于惠普公司,擔(dān)任技術(shù)架構(gòu)師和信息分析師。同時他還是上海益思研發(fā)管理咨詢有限公司首席架構(gòu)師、軟件咨詢組副組長。曾在世界500強的在華日企擔(dān)任架構(gòu)師,負(fù)責(zé)項目業(yè)務(wù)框架和平臺設(shè)計,曾帶領(lǐng)創(chuàng)業(yè)團隊與國內(nèi)外企業(yè)進行項目合作。51CTO、博客園、ITPUB、China Unix等IT社區(qū)的知名博客和技術(shù)專家。

2、CSDN和InfoQ的特約技術(shù)作家。2011年曾多次應(yīng)邀在架構(gòu)師大會、亞太軟件研發(fā)管理峰會和中國軟件開發(fā)大會等技術(shù)盛會上擔(dān)任演講嘉賓,深受與會者歡迎。此外,他還在為國內(nèi)多家軟件企業(yè)開展軟件架構(gòu)與性能優(yōu)化方面的培訓(xùn)。說道SQL Server Profiler,相關(guān)很多朋友們都已經(jīng)不陌生了。雖然說現(xiàn)在在網(wǎng)絡(luò)上有很多的文章介紹它的使用,但是介紹的都不怎么系統(tǒng)與完整。因為筆者對SQL Server Profiler的使用也有些年了,并且常常在性能優(yōu)化中使用,所以,借此機會,獻出一整個介紹SQL Server Profiler的系列文章??梢哉f說SQL Profiler是一個非常強大的工具,使用它,我們

3、可以捕獲和分析數(shù)據(jù)庫中發(fā)生的相關(guān)的事件,例如,存儲過程的執(zhí)行等。而捕獲的信息可以為我們在性能診斷中提供依據(jù)。如果你對SQL Profiler不是很熟悉,那么,本篇文章將會帶著你一步步的熟悉。在這篇文章中,我會講述SQL Profiler的工作原理,還會解釋在后面文章要常常要用的一些術(shù)語,同時也會講述如何保持一個Profiler Traces跟蹤文件。通過本篇文章的越多,朋友們會清楚如下的問題:1.理解SQL Profiler是如何工作的2.對Profiler的一些術(shù)語和概念有一個比較清楚的認(rèn)識,例如事件,數(shù)據(jù)列,過濾器等3.理解如何配置權(quán)限啟動Profiler4.可以創(chuàng)建基本的Profiler

4、跟蹤,并且保存。在開始學(xué)習(xí)任何一門技能之前,我們需要知道:為什么要學(xué)習(xí)這門技能,學(xué)習(xí)完了之后,可以給我們帶來什么好處?畢竟人的精力是有限的,不可能隨隨便便學(xué)習(xí)一門對自己毫無用處的知識??梢赃@樣說:區(qū)分一個有經(jīng)驗的DBA與一個新手DBA的區(qū)別就在于:有經(jīng)驗的DBA知道在核實充分利用何種工具可以快速的將問題搞定(其實我本身也是一個開發(fā)人員,通俗點說,就是寫應(yīng)用代碼的,不算是真正DBA,因為很多的時候,在項目中,沒有DBA,所以不得不扮演很多的角色,所以學(xué)習(xí)了不少的技能)。如果熟練的掌握了SQL Profiler之后,有經(jīng)驗的DBA就可以對數(shù)據(jù)庫的運行狀況進行跟蹤,并且利用跟蹤的數(shù)據(jù)進行問題的分析與

5、性能的診斷與優(yōu)化,有時候,甚至可以再問題還有發(fā)生之前發(fā)現(xiàn)潛在的問題。我們把掌握SQL Profiler的好處列下來:1.可以監(jiān)視SQL Server內(nèi)部發(fā)生的各種活動:例如發(fā)生在數(shù)據(jù)庫引擎中的活動,發(fā)生在Analysis Services以及Integration Services中的活動。2.監(jiān)控并且確認(rèn)某些查詢,事務(wù)相關(guān)的性能問題等。3.可以對執(zhí)行計劃進行分析。4.可以監(jiān)視并且確認(rèn)SQL Server內(nèi)部的發(fā)生的一些錯誤和警告。5.可以捕獲數(shù)據(jù)庫發(fā)生的數(shù)據(jù),并且還可以對數(shù)據(jù)庫的壓力進行重放。6.可以對數(shù)據(jù)庫中用戶的活動進行審計跟蹤。7.可以通過多種方式對數(shù)據(jù)進行分析與跟蹤。8.可以將跟蹤的

6、數(shù)據(jù)與系統(tǒng)的性能計數(shù)器關(guān)聯(lián)起來,從而更加全面的檢查發(fā)生的問題。9.可以將跟蹤的數(shù)據(jù)以DTA來進行分析10.還可以對SQL Profiler進行編程,可以不使用它的GUI工具。說了這么多,似乎已經(jīng)把SQL Profiler說的天花亂墜了!其實SQL Profiler也不是萬能的,也只是在SQL Server診斷與分析中常常使用的一種工具而已,至于決定到底是否在使用它,還是取決于DBA或者技術(shù)人員本身,通過本系列的學(xué)習(xí),相信大家會有一個比較清楚的認(rèn)識。首先,我們來簡要的看看SQL Server Profiler的工作原理。SQL Server Profiler的工作原理其實SQL Server P

7、rofiler這個工具是SQL Trace的一個GUI的版本,而SQL Trace是一組腳本,自SQL Server 2000就已經(jīng)有了的,這一組腳本捕獲和跟蹤SQL Server內(nèi)部發(fā)生一些事件,并且將跟蹤的數(shù)據(jù)保存以便后續(xù)使用。從本質(zhì)上說,SQL Trace就是一個非常簡單的工具,它的作用就是捕獲客戶端應(yīng)用與SQL Server之前的通信的信息。它扮演中一個非常特殊的網(wǎng)絡(luò)嗅探器的功能,用來捕獲與SQL Server相關(guān)的網(wǎng)絡(luò)活動,同時也允許我們查看客戶端應(yīng)用的請求觸發(fā)了SQL Server的哪些事件。另外,與我們熟悉的網(wǎng)絡(luò)嗅探器不同的是:SQL Trace只是捕獲發(fā)生在SQL Server

8、內(nèi)的相關(guān)的事件和活動,而不會獲取網(wǎng)絡(luò)上面?zhèn)鬏數(shù)臄?shù)據(jù)。為了使得大家對SQL Trace有一個更加清楚的認(rèn)識,我們來看看下面的一個圖1-1:那么對于上面的圖1:1.SQL Server事件是指由SQL Server本身內(nèi)部觸發(fā)的活動,或者由客戶端與SQL Server進行連接時在SQL Server內(nèi)部觸發(fā)的活動。事件包含很多不同的種類,我們將會在后續(xù)文章中詳解介紹。2.因為事件發(fā)生在SQL Server的內(nèi)部,SQL Trace的任務(wù)就是根據(jù)Filter來捕獲自己感興趣的事件。3.一旦事件被SQL Trace捕獲,那么發(fā)生的事件與相關(guān)的事件信息就會被保存在內(nèi)存的隊列中。4.SMO(Server

9、Management Objects),是可以直接的訪問SQL Server的對象模型。其實,SQL Trace對于我們而言,就可以將之看成是一個黑盒,我們能做的就是通過一些方式和工具去與這個黑盒交互,SQL Profiler和系統(tǒng)的存儲過程就是這樣的工具。為了后續(xù)的理解方便,也為了保證我們的理解一致,我們下面介紹一些常見的概念和術(shù)語。SQL Profiler中常用的術(shù)語概念這里主要介紹下面四個術(shù)語:事件(Events)數(shù)據(jù)列(Data Columns)過濾器(Filters)跟蹤(Trace)事件相信熟悉微軟技術(shù)的朋友對“事件”這個概念已經(jīng)不陌生了,簡而言之就是發(fā)生的活動,例如一個存儲過程的

10、執(zhí)行,就是一個活動,也是發(fā)生了一個事件。SQL Profiler允許我們捕獲大約170多種不同的與SQL Server有關(guān)的時間。另外,在SQL Profiler中,使用Event Category這個概念,對不同的事件進行了一個大致的分類,使得為我們的監(jiān)控更加的方便,例如所有與存儲過程相關(guān)的事件都被劃分在一個分類中。數(shù)據(jù)列這個概念理解起來非常簡單,簡而言之就是描述事件發(fā)生的一些信息。這個概念和我們在.NET編程中的事件信息的概念是一樣的。如圖1-2所示,可以看到事件發(fā)生的時候,包含了一些實事件信息,即數(shù)據(jù)列。圖1-2中列出了很多事件的數(shù)據(jù)列,例如,對于RPC:Completed事件而言,包含

11、了TextData,ApplicationName等。同時,還可以看出 ,不是所有事件都有相同的數(shù)據(jù)列。過濾器顧名思義,過濾器主要是SQL Profiler用來對發(fā)生的事件進行過濾的,只捕獲感興趣的事件。可以根據(jù)很多的來創(chuàng)建靈活的過濾,如圖1-3所示:過濾器在使用SQL Profiler中非常有用,因為它可以決定我們收集到的數(shù)據(jù)的正確性,更加對收集到的數(shù)據(jù)的量產(chǎn)生很多的影響。跟蹤請注意:這里的跟蹤,不是個動詞,而是一個名詞!每一個跟蹤包含了發(fā)生的事件以及相關(guān)的數(shù)據(jù)列信息,并且我們常常將這些信息保存在物理的文件中。其實,我們常常所說的跟蹤,就是一個保存SQL Profiler數(shù)據(jù)的跟蹤文件。跟蹤

12、文件可以以很多的方式保存:保存在內(nèi)存中,以特定的格式導(dǎo)出,保存在數(shù)據(jù)庫中,保存為XML文件等。如圖1-4所示,就現(xiàn)在SQL Profiler中直接顯示了跟蹤信息,即跟蹤信息保存在內(nèi)存中:本篇就暫時介紹到這里,下一篇,就和大家一起來看看,如何快速的使用SQL Profiler。1. 如何配置權(quán)限2. 啟動SQL Profiler3. 介紹SQL Profiler 的GUI4. 保存一個跟蹤通過上一篇文章的講述,相信大家已經(jīng)對SQL Profiler有了一個初步的了解,或者有些朋友已經(jīng)開始磨拳擦掌,想躍躍欲試了。在開始使用SQL Profiler之前,有一些問題需要注意。1. 不要隨意的在生產(chǎn)環(huán)境

13、下(或者說:實際的數(shù)據(jù)庫工作的服務(wù)器環(huán)境)輕易的使用SQL Profiler,特別是在初學(xué)的時候。因為使用SQL Profiler會對服務(wù)器產(chǎn)生壓力,帶來一定的性能的影響,在初學(xué)的時候,不要拿正式的環(huán)境做實驗。2. 最好在自己的本地搭建測試的數(shù)據(jù)庫,然后采用一些腳本或者工具來模擬對數(shù)據(jù)庫的使用。在后面的講解中,我會運行一些示例的SQL 腳本來模擬。3. SQL Profiler是一個操作性比較強的工具,最好是跟著本系列中的示例,一個個的動手操作和體會。理解如何配置權(quán)限在SQL Server中,正如不是誰都可以創(chuàng)建表,試圖一樣,也不是誰都可以自由的運行SQL Profiler的。因為SQL Pr

14、ofiler在運行的過程中可以看到很多的與服務(wù)器以及客戶端相關(guān)的信息,所以要求運行這個工具的權(quán)限也很高。在默認(rèn)情況下,只有sa(SQL Server中的一個超級用戶)和在SYSADMIN組中的用戶可以運行SQL Profiler。在SQL Server 2005中,也可以通過用sa或者SYSADMIN用戶給其他用戶授權(quán),從而使得其他的SQL Server用戶也可以有這個權(quán)限。授權(quán)的SQL 腳本如下圖2-1所示:如上圖所示,我們可以將LoginID替換為我們想要授權(quán)的用戶名。下面的一段腳本是收回這個授權(quán)的,如圖2-2所示:啟動SQL Profiler好,有了權(quán)限之后,我們就來好好的體驗一把!可以

15、通過很多的方式打開SQL Profiler。我這里給大家介紹一下:1. 使用命令行工具打開。步驟非常簡單,只要在CMD命令窗口輸入“profiler“,然后按下“回車”就行了。這里需要注意的是,如果安裝的是SQL Server 2008,那么就輸入“profiler”,如果安裝的是SQL Server 2005,那么就輸入“profiler90”。我個人喜歡使用命令行方法,快捷!注:這里非常抱歉,因為我所在的環(huán)境安裝的都是英文版的操作系統(tǒng)與軟件,所以很多的時候,一些界面會以英文的形式顯示,希望朋友們見諒!2. 直接在SQL Server Management Studio的菜單中打開,如圖2-

16、3所示:不管用什么方式,打開SQL Profiler之后,就看到如下的界面,如圖2-4所示:然后,在菜單“File”中選擇“New Trace”,如圖2-5所示:當(dāng)我們選擇了“New Trace”(創(chuàng)建新跟蹤)之后,就會彈出如下的界面,如圖2-6所示:使用合法的身份驗證方式進入之后,就會看到選擇要跟蹤的事件的界面,如圖2-7所示:在這個界面中,包含了兩個選項卡,一個是“General”,另外一個是“Events Selection”。這里我們很有必要對界面中做一些簡單的介紹。在“General”選項卡中,我們可以對跟蹤進行命名,還可以選擇不同的模板,并且還可以設(shè)置很多不同的選項。其中,Trac

17、e Provider name就是指的我們要跟蹤的SQL Server的實例名;Trace provide type,指的就是數(shù)據(jù)庫的版本名,而version就是版本的數(shù)字表示。在這里,比較重要的一個選擇就是“Use the template”,如圖2-8所示:在這里可以選擇一個跟蹤的模板,不同的模板,功能不一樣,并且模板中事件,數(shù)據(jù)列,過濾器等都不一樣!每一種模板的用處,我們會在后續(xù)文章講述。另外,在“Events Selection選項卡”中,選擇我們要跟蹤的事件,如圖2-9所示:這里出于體驗的目的,我們將一切都保持默認(rèn)!下面,我們就開始啟動SQL Profiler去監(jiān)控數(shù)據(jù)庫中發(fā)生的活動

18、:點擊“Run”按鈕,如圖2-10所示:那么啟動之后,因為這個時候SQL Profiler是對整個SQL Server實例進行監(jiān)控的,也就是說,在SQL Server中的任意一個數(shù)據(jù)庫發(fā)生了任何的活動,都會被SQL Profiler捕獲到(當(dāng)然,如果設(shè)置了過濾器就例外了)。為了使得效果明顯,我這里運行一些腳本,對數(shù)據(jù)庫進行一些操作,起到模擬的作用。我們看到下面的一個效果圖2-11所示:從圖中可以看到,我在SQL Server運行一個查詢,這個時候SQL Profiler立刻就捕獲到了這個動作。介紹SQL Profiler 的GUI對于SQL Profiler的跟蹤窗口,有很多我們需要學(xué)習(xí)的東西,下面我們就通過一個比較全面的圖(2-12)來看看:對于圖2-12:1. 界面分為兩個部分,在上面標(biāo)記為紅色的那個區(qū)域,在這里就顯示了Profiler捕獲到的事件,每一行就代表一個發(fā)生的事件。2. 不是所有的事件都包含相同的數(shù)據(jù)列,例如在圖中,有

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論