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