限制微調持續期間和事件
您可以透過限制應用程式微調的時間或限制它微調的事件數目,以控制 Database Engine Tuning Advisor 微調工作階段。當您需要在維護視窗中微調實際伺服器時,限制微調分析持續期間會很有用;當您想藉由微調相同的工作負載來比較兩個假設組態時,限制微調的事件數目非常有用。
針對任何特定組態,Database Engine Tuning Advisor 可能無法微調工作負載中的所有事件。如果您指定要微調的事件數目,則可確保每一個組態的微調工作階段都考量相同數目的可微調事件,因此更能比較結果。
控制微調的持續期間
Database Engine Tuning Advisor 會分析工作負載,直到它為指定之資料庫找到實體效能結構的最佳可能集合。它所花費的時間量,視工作負載的長度而定。Database Engine Tuning Advisor 可能需花費數天,才能完成包含數百個事件之工作負載的完整分析。雖然在整個分析過程中資料庫仍然可供使用,但效能會受到影響。
若要控制 Database Engine Tuning Advisor 分析工作負載的時間長度,請設定時間上限。時間上限是指您要 Database Engine Tuning Advisor 花費在工作負載分析的小時數和分鐘數。時間上限設定的結果是一項建議,此建議是根據 Database Engine Tuning Advisor 在時間屆滿之前所能產生的最佳方案而提出。
在 Database Engine Tuning Advisor 圖形化使用者介面 (GUI) 中,此參數預設為 1 小時。在 dta 命令列公用程式中,預設限制是設為 8 小時。如果完整分析需要的時間低於設定限制,則完成時即終止微調。在兩個工具介面中都可以指定無限制的微調時間,以產生可能的最佳建議。
以下小節說明如何在 GUI 和命令提示字元下設定此微調選項。
在圖形化使用者介面中設定微調時間
您可以在 Database Engine Tuning Advisor GUI 中設定微調時間限制,方法是在 [微調選項] 索引標籤上選取 [限制微調時間],然後設定 [停止時間] 的日期和時間。
適用下列詳細資料:
一般而言,指定較長的微調時間會有較好的結果,因為可以分析更多的工作負載。這些建議是以更完整的資訊為基礎。
依預設,最大微調限制是設為 1 小時。
若要指定無限制的微調時間,請清除 [限制微調時間] 核取方塊。
在 dta 命令列公用程式中設定微調時間
您可以透過 dta 命令列公用程式設定微調時間限制,方法是指定 -A 引數的值。例如,請檢視下列的 dta 命令:
dta -E -s MySession -D AdventureWorks -if MyWorkloadScript.sql -fa IDX -A 120
其中 -E 指定信任連接,-D 指定要微調的資料庫,-if 指定工作負載檔案,-fa IDX 指定 Database Engine Tuning Advisor 只需在其建議中考慮加入索引,-A 120 表示微調必須在 120 分鐘內完成。
從命令提示字元執行 dta 公用程式時 (而不是在指令碼中呼叫它以進行自動微調),按 CTRL+C 即可停止微調。接著 Database Engine Tuning Advisor 會根據當時所消耗的工作負載量,傳回可能的最佳建議。
適用下列詳細資料:
一般而言,指定較長的微調時間會有較好的結果,因為可以分析更多的工作負載。因此,這些建議是以更完整的資訊為基礎。
若要指定無限制時間量的微調,請使用命令列引數 -A 0。使用此引數可取得整個工作負載的最佳建議。
如果未指定 -A 選項,則預設為 -A 480 (8 小時微調時間)。
即使您按 CTRL+C,dta 公用程式在結束之前仍需要花點時間來填入分析報表。
在 XML 輸入檔中設定微調時間
您也可以在 XML 輸入檔中設定最大微調時間限制,這個檔案可搭配 dta 命令列公用程式一起使用。若要在 XML 輸入檔中指定以分鐘為單位的微調時間限制,請使用 TuningOptions 父元素下的 TuningTimeInMin 子元素。如需有關 XML 輸入檔的詳細資訊,請參閱<XML 輸入檔參考 (Database Engine Tuning Advisor)>。
控制要微調的事件數目
您可以控制工作負載中 Database Engine Tuning Advisor 要微調的事件數目。這個選項只有從 dta 命令列公用程式中,透過 -n 引數才能使用。有用到 -n 引數的 dta 公用程式,其行為會根據 -A 引數的指定值 (用來指定微調時間限制) 而定,如下所示:
當 dta 已微調完指定的事件數目或指定的微調時間限制過了 (以先發生的為準),它就會停止。如果未指定 -n 引數,依預設 dta 會微調工作負載中的所有事件。如果未指定 -A 引數,依預設 dta 會假設微調時間限制為 8 小時。
若要確定所微調的事件數目已達到 -n 引數的指定值,請同時指定 0 值給 -A 引數,此值指定無限制的微調時間。例如,-n 250 -A 0。
在 XML 輸入檔中指定要微調的事件數目
您也可以在 XML 輸入檔中指定要微調的事件數目,這個檔案可搭配 dta 命令列公用程式一起使用。若要在 XML 輸入檔中指定要微調的事件數目,請使用 TuningOptions 父元素下的 NumberOfEvents 子元素。如需有關 XML 輸入檔的詳細資訊,請參閱<XML 輸入檔參考 (Database Engine Tuning Advisor)>。
限制微調時間及事件數目的最佳作法
以下是對於限制微調時間及事件數目的建議:
對於單一查詢或小型工作負載 (少於 100 個事件),請指定無限制的微調時間。指定無限制的微調時間,可使 Database Engine Tuning Advisor 產生最佳建議,而且在大部分情況下,這項微調將在極短時間內完成。
對於大型工作負載 (超過 100 個事件),請依序考慮下列選項,唯有先考慮過 1 到 3 的選項之後,才可訴諸最後一個選項 (4)。
如果使用者時間有限,請限制微調時間。
如果微調固定數量的事件便已足夠 (例如,前 10,000 個事件就可以代表其餘的工作負載),請使用 dta 命令列公用程式,並使用 -n 引數來指定事件數目。
如果您使用 dta 命令列公用程式,並想要進一步限制微調時間,可使用 -A 和 -n 引數。例如,若指定 -A 240 和 -n 1000,Database Engine Tuning Advisor 微調到 1000 個事件或超過 4 小時後 (以先發生者為準),就會停止微調。
微調所花費的時間,視查詢的複雜度 (參考的資料表數目)、選擇的功能集 (微調索引檢視比微調索引更耗時) 及資料大小 (用於建立統計資料) 而定。在大部分情況下,Database Engine Tuning Advisor 花在微調上的大部分時間,是在呼叫查詢最佳化工具。要提供多少時間給 Database Engine Tuning Advisor 微調才恰當,簡單的基本原則如下:
對於只參考一到三個資料表的簡單查詢,如果只有微調索引,則每個查詢大約給 1 秒;如果同時要微調索引和索引檢視,則每個查詢大約給 10 秒。對於參考超過三個資料表的複雜查詢,如果只有微調索引,則每個查詢大約給 10 秒;如果同時要微調索引和索引檢視,則每個查詢大約給 100 秒。
如果 Database Engine Tuning Advisor 指出已消耗了 100% 工作負載,這表示已剖析完整個工作負載,但不一定有進行微調。若要判斷是否已微調整個工作負載,請搜尋微調記錄結尾是否有下列訊息:
All events in the workload were not tuned. Consider increasing time bound or specify number of events to be considered in the input XML.
如果此訊息出現在微調記錄中,表示 Database Engine Tuning Advisor 無法微調整個工作負載。若要解決此問題,請指定較長的微調時間。若要確定工作負載中的所有事件都已微調,您可以指定無限制的微調時間。如果您選擇不指定無限制的微調時間,Database Engine Tuning Advisor 會嘗試在指定的微調時間內,盡可能微調最大數量的事件。
注意:MicrosoftSQL Server 2000 索引微調精靈中的 [快]、[中] 或 [完整] 模式,與 Database Engine Tuning Advisor 中的 -A 和 -n 引數之間,並無直接的對應關係。一般而言,如果 SQL Server 2000 特定模式的微調 ([快]、[中] 或 [完整]) 花費了一定時間,則相同的時間量在 SQL Server 2005 Database Engine Tuning Advisor 中,通常可提供相當或更好的建議。因此建議 [完整] 模式的使用者,在 Database Engine Tuning Advisor 中使用無限制的微調時間,以及無限制微調工作負載中的事件數目。
限制微調持續期間的其他方法
除了限制 Database Engine Tuning Advisor 執行時間之外,您也可以只微調資料庫中的資料表子集。
另外也可使用下列選項:
保存所有現有的實體設計結構 (PDS)。
只保存索引。
只保存叢集索引。
Database Engine Tuning Advisor 會在最終建議中納入所有的索引提示或查詢提示 (即使該索引對於資料表而言並不是最好的),也可以提議和建議在查詢中參考其他資料表上的索引;不過,所有指定為提示的索引,都會是最終建議的一部分。提示會讓 Database Engine Tuning Advisor 無法選擇更好的執行計畫,所以在開始分析工作負載之前,請考慮從查詢中移除任何索引提示。