數(shù)據(jù)庫的調(diào)整和優(yōu)化可能是一個(gè)數(shù)據(jù)庫管理員的最主要也是最關(guān)鍵的任務(wù)之一。
遺憾的是,對(duì)像SQL Server這樣的數(shù)據(jù)庫進(jìn)行調(diào)整和性能調(diào)節(jié)并不是一件容易的事。SQL Server帶有幾種監(jiān)控和調(diào)試工具,功能強(qiáng)大,但精通掌握十分困難。
圖1 Coefficient類似Profiler
然而,現(xiàn)在有了Coefficient。它是Intrinsic Design公司發(fā)布的新產(chǎn)品,對(duì)初學(xué)者和有經(jīng)驗(yàn)的數(shù)據(jù)庫管理員都適用。Coefficient可以幫助加強(qiáng)SQL Server的性能調(diào)節(jié),提高操作員監(jiān)控SQL Server內(nèi)部工作的能力。最有用處的是,它能把監(jiān)控?cái)?shù)據(jù)以幾乎所有的數(shù)據(jù)庫管理員都可以理解的格式呈列出來。
Coefficient并不是Performance Monitor, Query Analyzer或者Profiler的完全替換品。Coefficient更像加強(qiáng)的SQL Server Profiler。它的工作方式十分類似于Profiler,但比Profiler更為容易使用和理解。(如圖1)
Coefficient運(yùn)行過程
Coefficient可以安裝在SQL Server服務(wù)器上,也可以安裝在任何通過網(wǎng)絡(luò)聯(lián)結(jié)在SQL Servers上的計(jì)算機(jī)上。安裝十分簡單,安裝完畢就可立即進(jìn)行監(jiān)控工作了。一般來說,按下列步驟進(jìn)行:
首先在主頁面上增加一個(gè)SQL Server,就像使用Enterprise Manager注冊一個(gè)SQL Server一樣。
在列表上選擇一個(gè)想要分析的數(shù)據(jù)庫,然后建立一個(gè)跟蹤,即通常所說的Trace,有點(diǎn)像用SQL Server Profiler建立的跟蹤文件,但是比它更容易操作:不必經(jīng)過多少如Events、Data Columns和Filters之類的復(fù)雜工作。替而代之的是一種逐級(jí)的向?qū)?,只需要設(shè)置幾個(gè)簡單的參數(shù)即可完成,包括指定Trace表名(Coefficient用來存儲(chǔ)跟蹤數(shù)據(jù)的SQL Server表)、設(shè)置Trace運(yùn)行時(shí)間(試用版最多只能運(yùn)行20分鐘)、設(shè)置分析是否在Trace結(jié)束之后立即執(zhí)行,等等。
如果選擇在Trace完成之后立即運(yùn)行分析(Analysis),還需要指定分析文件存儲(chǔ)的地方和運(yùn)行分析的類型,這些常常是通過選擇模板完成的,也就是說,模板(Template)是用來指定想要執(zhí)行的分析的具體類型。
完成向?qū)?,Trace就開始了,一直運(yùn)行到指定的時(shí)間跑完為止(如圖2)。在這期間,監(jiān)控所得到的數(shù)據(jù)保存在SQL Server中指定的Trace表中。隨后可以立即進(jìn)行Analysis,用戶也可以在任何時(shí)候?qū)race表中的監(jiān)控?cái)?shù)據(jù)進(jìn)行多種分析。
分析的結(jié)果保存為很多HTML文件,用戶可以方便地打開并點(diǎn)擊查看各項(xiàng)內(nèi)容。更重要的是,分析結(jié)果能方便地發(fā)布在內(nèi)部網(wǎng)的網(wǎng)絡(luò)服務(wù)器上,供多個(gè)用戶使用瀏覽器進(jìn)行查閱。
Analysis是Coefficient的關(guān)鍵
在介紹分析結(jié)果之前,讓我們先了解模板(Template)和分析(Analysis)類型。當(dāng)用Coefficient執(zhí)行分析時(shí),可以選擇一個(gè)已預(yù)定義好的模板,也可以建立自己的模板。實(shí)際上,模板就是一個(gè)很多分析類型的列表,建立模板就是選擇需要進(jìn)行的分析對(duì)象。通過這個(gè)列表,Coefficient處理從數(shù)據(jù)庫中收集的跟蹤數(shù)據(jù)。Coefficient總共可以分析多達(dá)49種不同的指標(biāo),這些指標(biāo)都和SQL Server內(nèi)部工作有關(guān)。主要有以下典型性能分析:
客戶中斷請求和中斷連接信息。通過attention events常常可以查出在客戶端和服務(wù)器之間的通訊問題。
SQL Server和NT用戶連接信息。例如哪個(gè)用戶連接了多長時(shí)間。
死鎖次數(shù)及導(dǎo)致這些死鎖的信息。
SQL Server錯(cuò)誤和警告信息。
表統(tǒng)計(jì)的遺漏信息??梢詭椭_定統(tǒng)計(jì)是否存在任何遺漏,這些信息可以用來優(yōu)化查詢,提高執(zhí)行程序代碼的速度。
圖3 選擇模板和分析項(xiàng)目
SQL語句是否執(zhí)行和SQL Prepare/Execute模型。運(yùn)用這些模型常??梢约涌熘貜?fù)執(zhí)行SQL代碼的速度。
執(zhí)行計(jì)劃重復(fù)使用的頻率。
存儲(chǔ)過程再編譯的頻率。
存儲(chǔ)程序和SQL語句的調(diào)用情況。包括持續(xù)時(shí)間、讀和寫的次數(shù),等等。
SQL Server超時(shí)次數(shù)。
一個(gè)Coefficient實(shí)例
假設(shè)要分析數(shù)據(jù)庫中的存儲(chǔ)過程的性能,并確定存儲(chǔ)過程的最大共同點(diǎn)。當(dāng)調(diào)整一個(gè)數(shù)據(jù)庫時(shí),最好的解決辦法之一就是確定哪個(gè)存儲(chǔ)過程運(yùn)行最頻繁,而后對(duì)這些存儲(chǔ)過程進(jìn)行優(yōu)化。即使只使一個(gè)存儲(chǔ)過程減少了三分之一的運(yùn)行時(shí)間,如果一天需要運(yùn)行10,000次這個(gè)存儲(chǔ)過程,那也是一個(gè)可喜的成績。
首先建立一個(gè)Trace,選擇SPSQL模板進(jìn)行分析。SPSQL模板可以提供很多數(shù)據(jù),但是我們僅僅對(duì)哪個(gè)存儲(chǔ)過程運(yùn)行最頻繁感興趣,所以只需選擇Stored Procedure Call Frequency report(SPSQL模板的一個(gè)部分)。
依照上述步驟進(jìn)行即可生成監(jiān)控報(bào)告,報(bào)告里既有表格也有圖例,在表格里以存儲(chǔ)過程運(yùn)行的頻率大小排序,圖例就顯示在表的上面(如圖3)。
圖4 分析報(bào)告
從圖中,很容易就能得知哪個(gè)存儲(chǔ)過程運(yùn)行頻繁。在這個(gè)例子中,存儲(chǔ)過程名字是pcGet_SJZH_NJ,在Trace周期內(nèi)被調(diào)用682次。從表格中還能得到更多關(guān)于存儲(chǔ)過程的信息,例如平均持續(xù)時(shí)間(毫秒)、平均數(shù)量、讀寫次數(shù)和CPU平均占用率等等。
Coefficient的另一個(gè)特色是可以提供更多的詳細(xì)信息。例如,假定我們想要了解pcGet_SJZH_NJ過程的詳細(xì)信息,就可以點(diǎn)擊名字打開另一個(gè)頁面查看更多具體數(shù)據(jù),在接下來的頁面上能看到常規(guī)統(tǒng)計(jì)信息、持續(xù)時(shí)間統(tǒng)計(jì)、讀取統(tǒng)計(jì)、記錄統(tǒng)計(jì)、CPU統(tǒng)計(jì)、存儲(chǔ)過程引用和存儲(chǔ)過程的源代碼(如圖4)。另外,還可以點(diǎn)擊“Execution plan”查看存儲(chǔ)過程的執(zhí)行計(jì)劃。需要強(qiáng)調(diào)的是,提供的信息很詳細(xì),不僅可以查看到發(fā)送給存儲(chǔ)過程的數(shù)據(jù),也可以看到存儲(chǔ)過程的參數(shù),以及執(zhí)行計(jì)劃(Execution plan)。
嵌入報(bào)告中的幫助信息
Coefficient產(chǎn)生的數(shù)據(jù)比較多,用戶可能會(huì)擔(dān)心弄不清這些數(shù)據(jù)到底表示什么,怎樣才能利用它們進(jìn)行數(shù)據(jù)庫性能調(diào)整。其實(shí)擔(dān)心大可不必,在每篇分析報(bào)告的下面都有大篇幅的關(guān)于數(shù)據(jù)含義的總體說明。這些說明并不涉及產(chǎn)生的具體數(shù)據(jù),但有很多關(guān)于數(shù)據(jù)庫性能優(yōu)化的基礎(chǔ)知識(shí)。從某種意義上說,Coefficient本身就是一本SQL Server數(shù)據(jù)庫優(yōu)化手冊。
Coefficient的適用人群
Coefficient對(duì)SQL Server程序員和數(shù)據(jù)庫管理員都很有用。程序員可以把它用在基于SQL Server的應(yīng)用軟件的開發(fā)過程和測試過程中,而數(shù)據(jù)庫管理員會(huì)覺得有益于調(diào)整已開發(fā)出來的應(yīng)用軟件,因?yàn)閿?shù)據(jù)庫隨時(shí)間不斷變化,數(shù)據(jù)庫管理員們能使用Coefficient即時(shí)查看數(shù)據(jù)庫內(nèi)部的運(yùn)行情況。最常用的是用Coefficient定義數(shù)據(jù)庫各個(gè)性能方面的基準(zhǔn),然后比較不同周期的分析結(jié)果,借以了解數(shù)據(jù)庫的運(yùn)行情況。
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com