36. 解決常見的效能問題
發現問題
一般效能瓶頸
SQL Server組態設定
本章總結
在整本書中,您看到了可以使用的工具和可以修改的參數,來幫助您發現與解決效能問題。例如,前一章學到如何利用 SQL 陳述式和預存程序來辨識問題,以及如何調整那些陳述式和程序達成最佳化效能。本章則幫助您簡單地找到需要的資訊,以便解決各種效能問題,並檢視一些其他章節討論過跟效能有關的主題,提供檢驗效能問題的參考方案,與說明一些與效能監視和系統調整有關的附加資訊。
我們將從復習 瓶頸 (bottleneck)的定義開始。然後看看如何使用 Windows 2000 系統監視器(在 Windows NT 中稱為效能監視器),以及如何使用 Microsoft SQL Server Enterprise Manager 來確定效能問題是否存在。接著是如何解決一般效能問題,該問題發生在好幾種層級中,包括應用程式、SQL Server、作業系統和硬體等層級。用在系統容量計畫的主要規則已經在 第 6 章 說明過,但本章還會再復習一次,因為它們可以用來分析現有的系統,以確定是否需要附加硬體來改善效能。最後將復習前幾章提過的好幾種 SQL Server 設定參數,用來調整系統效能的改變方式。
在本章的結尾,您將可以識別效能瓶頸,並確定導致瓶頸的原因。雖然不是每次都能解決問題,但是只要肯花時間以及資源來處理這些問題,大部分問題是可以解決的。
什麼是瓶頸
瓶頸 一詞通常用來討論軟體和硬體效能問題,也就是系統中一個元件或一組元件可能限制系統效能的狀況。例如,缺少足夠容量的 I/O 子系統會導致一個嚴重的瓶頸-它會使整個系統變慢。(在本章的 <I/O子系統> 一節中會詳細的討論這種情況。)
幾乎所有系統中活動的元件都可能導致瓶頸。瓶頸可以由一個元件所引起,例如一個磁碟,或由一組元件所引起,例如I/O子系統,或由不同元件的組合所引起。例如,您可能首先檢測到一個 I/O 子系統瓶頸。解決這個問題的方法是透過增加更多的磁碟來支援發生問題系統中的 I/O 數量(硬體解決方案),或透過最佳化低效率查詢來減少 I/O 的發生(軟體解決方案),或兩者都使用。當 I/O 問題被解決時,可能會發現現在產生 CPU 瓶頸,並需要增加 CPU 的速度或 CPU 的數量。
發現問題
要確定系統是否有問題存在,首先要觀察系統效能。例如,使用者是否在執行資料庫查詢或修改時,受到比預期更慢的反應時間。這是效能問題或瓶頸的一般狀況。也許您會注意到,當執行某種查詢時,系統上所有其他的操作會執行得比平常慢。因此將著重於造成問題的最佳化查詢,或者在較少使用者存取系統時,試著同時執行查詢來找出原因。
另一個確定是否有問題存在的途徑是定期的測試和監控系統。可以使用的工具包括 Windows 2000 系統監視器和 SQL Server Enterprise Manager。本節會學習如何使用這兩種工具檢查系統的狀況,也將學習用在監視 SQL Server 過程的 sp_wh 0-7356-1266-8預存程式。
說明
如果需要使用 SQL Profiler和SQL Query Analyzer 來偵測和 SQL 陳述式有關的效能問題,請參閱 第 35 章 。
系統監視器
Windows2000 系統監視器不僅支援 Windows2000 計數器,也支援 SQL Server計數器。這些計數器監控系統功能隨時間的變化以確定系統中的狀態,例如 CPU 利用的百分率或 SQL Server 快取命中比率。(本章也提供關於特定效能計數器的資訊。)您可以隨時觀察監視器,或將資料記錄到檔案中,以後再檢視。
要使用系統監視器監視系統,請依下列步驟進行:
-
- 按 開始 / 程式集 / 系統管理工具 / 效能 ,進入系統監視器視窗。
- 指定您是否以圖表格式、報表格式或記錄資料格式來檢視計數器資料,或是在工具列上點選合適的按鈕,檢視之前存在資料記錄檔的資料。圖36-1顯示在 系統監視器 中的圖表檢視。如果選擇檢視記錄檔,對話方塊會顯示在您開啟的檔案上。
圖36-1 Windows 2000 效能監視器 - 要在 效能 視窗中加入一個檢視的計數器,請在工具列中按一下加號按鈕,會出現 新增計數器 對話方塊,如圖36-2所示。點選 本機電腦計數器 ,檢視本機系統的計數器,或者點選 從下列電腦選擇計數器 ,並從下拉式清單上選擇一個遠端電腦名稱,檢視該電腦的計數器。
圖36-2 「新增計數器」對話方塊 - 從 效能物件 下拉式清單上選擇 System 物件。這些物件代表系統元件。您選擇的物件計數器將顯示在對話方塊左邊角落的清單上。要觀察所有物件的計數器,按一下 所有計數器 。如果想要監視某些特定的計數器,點選 從清單選取計數器 ,然後選擇清單上的計數器。有些計數器不只一種,這些例子都將顯示在對話方塊右邊角落的清單上。要選擇一個或多個特定例子來檢視的話,就點選 從清單選取例項 ,或者點選 所有例項 來檢視全部的例子。
- 按一下 新增 ,所選擇的計數器就會新增到 效能 視窗。(如果選擇一個計數器的多種例項,它們會全部新增進去。)您可以繼續新增計數器。準備要回到 效能 視窗時按一下 關閉 ,您就能看到計數器提供的效能資料。圖36-3顯示三種計數器回傳的結果:Context Switches/Sec、Total Server Memory (KB)和% Processor Time。
圖36-3 即時系統監視器
要將效能資料存入記錄檔中,請跟著下面程序:
-
- 在 效能 視窗左邊窗格中展開 效能記錄檔及警示 。在 計數器記錄檔 上按一下右鍵,並從快顯功能表中選擇 新增記錄檔設定 。出現 新記錄檔設定 對話方塊後,在這裡輸入您的記錄檔設定名稱,如圖36-4所示,最後按一下 確定 。
- 在 效能 視窗左邊窗格中展開 效能記錄檔及警示 。在 計數器記錄檔 上按一下右鍵,並從快顯功能表中選擇 新增記錄檔設定 。出現 新記錄檔設定 對話方塊後,在這裡輸入您的記錄檔設定名稱,如圖36-4所示,最後按一下 確定 。