資料庫管理員制勝之寶
來源:互聯網
上載者:User
管理員|資料|資料庫 資料庫的調整和最佳化可能是一個資料庫管理員的最主要也是最關鍵的任務之一。
遺憾的是,對像SQL Server這樣的資料庫進行調整和效能調節並不是一件容易的事。SQL Server帶有幾種監控和調試工具,功能強大,但精通掌握十分困難。
圖1 Coefficient類似Profiler
然而,現在有了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常常可以查出在用戶端和伺服器之間的通訊問題。
SQL Server和NT使用者串連資訊。例如哪個使用者串連了多長時間。
死結次數及導致這些死結的資訊。
SQL Server錯誤和警告資訊。
表統計的遺漏資訊。可以協助確定統計是否存在任何遺漏,這些資訊可以用來最佳化查詢,提高執行程式代碼的速度。
圖3 選擇模板和分析項目
SQL語句是否執行和SQL Prepare/Execute模型。運用這些模型常常可以加快重複執行SQL代碼的速度。
執行計畫重複使用的頻率。
預存程序再編譯的頻率。
儲存程式和SQL語句的調用情況。包括期間、讀和寫的次數,等等。
SQL Server逾時次數。
一個Coefficient執行個體
假設要分析資料庫中的預存程序的效能,並確定預存程序的最大共同點。當調整一個資料庫時,最好的解決辦法之一就是確定哪個預存程序運行最頻繁,而後對這些預存程序進行最佳化。即使只使一個預存程序減少了三分之一的已耗用時間,如果一天需要運行10,000次這個預存程序,那也是一個可喜的成績。
首先建立一個Trace,選擇SPSQL模板進行分析。SPSQL模板可以提供很多資料,但是我們僅僅對哪個預存程序運行最頻繁感興趣,所以只需選擇Stored Procedure Call Frequency report(SPSQL模板的一個部分)。
依照上述步驟進行即可產生監控報告,報告裡既有表格也有圖例,在表格裡以預存程序啟動並執行頻率大小排序,圖例就顯示在表的上面(如圖3)。
圖4 分析報告
從圖中,很容易就能得知哪個預存程序運行頻繁。在這個例子中,預存程序名字是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定義資料庫各個效能方面的基準,然後比較不同周期的分析結果,藉以瞭解資料庫的運行情況。