適用於:SQL Server
使用測試伺服器微調實際執行伺服器上的資料庫,是 Database Engine Tuning Advisor 的重要優點。 您可利用這項功能,在不需將實際資料從實際伺服器複製到測試伺服器的情況下,將微調負擔卸載到測試伺服器上。
注意
Database Engine Tuning Advisor 圖形化使用者介面 (GUI) 不支援測試伺服器微調功能。
若要順利使用這項功能,請檢閱下列章節列出的考量事項。
設定測試伺服器/正式伺服器環境
要使用測試伺服器對實際伺服器上的資料庫進行微調的使用者,必須同時位於兩部伺服器上,否則此案例將會失敗。
必須啟用擴充預存程序 xp_msver,才能使用測試伺服器/實際伺服器案例。 Database Engine Tuning Advisor 會使用此擴充預存程序來提取在微調測試伺服器時實際伺服器上可使用的處理器數量與記憶體數量。 如果尚未啟用 xp_msver,Database Engine Tuning Advisor 會假設執行 Database Engine Tuning Advisor 之電腦的硬體特性。 如果無法取得執行 Database Engine Tuning Advisor 之電腦的硬體特性,將會假設 1 個處理器和 1024 MB 的記憶體。 安裝 SQL Server 時,預設會開啟擴充預存程序。 如需詳細資訊,請參閱介面區組態和 xp_msver (Transact-SQL)。
Database Engine Tuning Advisor 預期測試伺服器和實際伺服器上的 SQL Server 版本必須相同。 如果有兩種不同的版本,將優先採用測試伺服器上的版本。 例如,如果測試伺服器執行的是 SQL Server Standard,即使實際伺服器執行的是 SQL Server Enterprise,Database Engine Tuning Advisor 也不會在其建議中包含索引檢視表、資料分割和線上作業。
關於測試伺服器/實際伺服器的行為
Database Engine Tuning Advisor 在做出建議時,會將實際伺服器與測試伺服器之間的硬體差異列入考量。 建議內容與僅在正式環境伺服器上進行調校時相同。
Database Engine Tuning Advisor 為了收集中繼資料以及建立調校所需的統計資料,可能會對生產伺服器增加一些負載。
Database Engine Tuning Advisor 不會將實際資料從實際執行伺服器複製到測試伺服器。 它只會複製資料庫的中繼資料與必要的統計資料。
所有工作階段資訊都會儲存在實際伺服器的 msdb 中。 如此可讓您充分利用可進行微調的所有測試伺服器,且所有工作階段的相關資訊都會存放在同一個位置 (實際伺服器) 上。
Shell 資料庫的相關問題
完成調校後,Database Engine Tuning Advisor 應移除其在調校過程中於測試伺服器上建立的任何中繼資料。 其中包括 Shell 資料庫。 若您要以相同的實際伺服器與測試伺服器執行一系列的微調工作階段,您可以保留此 Shell 資料庫以節省時間。 請在 XML 輸入檔中,指定 RetainShellDB 子元素以及 TuningOptions 父元素下的其他子元素。 使用這些選項會使 Database Engine Tuning Advisor 保留殼資料庫。 如需詳細資訊,請參閱 XML 輸入檔參考資料 (Database Engine Tuning Advisor)。
在順利完成測試伺服器/實際伺服器微調工作階段之後,即使您尚未指定 RetainShellDB 子元素,Shell 資料庫可能還是會留在測試伺服器上。 這些不需要的 Shell 資料庫可能會干擾後續的微調工作階段,因此應該在執行其他測試伺服器/實際伺服器微調工作階段之前加以卸除。 此外,如果調校工作階段意外結束,測試伺服器上的 Shell 資料庫及其中的物件可能會殘留在測試伺服器上。 啟動新的測試伺服器/實際伺服器微調工作階段之前,您也應該刪除這些資料庫和物件。
微調程序的相關問題
使用者必須檢查微調記錄中,是否有因實際伺服器與測試伺服器之間的差異所導致的微調錯誤,以及因為從實際伺服器複製中繼資料到測試伺服器所導致的錯誤。 例如,測試伺服器上可能沒有使用者登入存在。 若測試伺服器上沒有使用者登入存在,則工作負載中這些由該使用者登入所發出的事件,將無法進行微調。 使用 Database Engine Tuning Advisor GUI 檢視微調記錄。 如需詳細資訊,請參閱 檢視及處理 Database Engine Tuning Advisor 的輸出
如果 Database Engine Tuning Advisor 因其在測試伺服器上建立的殼層資料庫中缺少物件,而無法調校許多事件,使用者就必須檢查調校記錄。 無法微調的事件都會列在記錄檔中。 若要順利微調測試伺服器上的資料庫,使用者必須在 Shell 資料庫中建立遺漏的物件,然後啟動新的微調工作階段。
若測試伺服器上已有同名的資料庫存在,則 Database Engine Tuning Advisor 不會複製中繼資料,但會繼續依需要進行微調並收集統計資料。 若使用者已在測試伺服器上建立資料庫,並在叫用 Database Engine Tuning Advisor 之前複製了適當的中繼資料,就適用於這種情況。
若正式伺服器上的資料庫已啟用 DATE_CORRELATION_OPTIMIZATION 選項,則在調校測試伺服器時,中繼資料以及與此選項相關的資料不會被完整地編寫成指令碼。 在測試伺服器/實際伺服器案例中執行微調時,可能會有下列問題:
對於使用 DATE_CORRELATION_OPTIMIZATION 選項的查詢,使用者可以在伺服器上擁有不同的查詢計畫。
Database Engine Tuning Advisor 可能會在建議指令碼中,建議卸除會強制執行 DATE_CORRELATION_OPTIMIZATION 選項的索引檢視表。
因此,您可能會想要忽略 Database Engine Tuning Advisor 對保存相關性統計資料的索引檢視所提出的任何建議,因為 Database Engine Tuning Advisor 知道其成本,卻不知道其效益。 Database Engine Tuning Advisor 可能不會建議使用者選取特定的索引,例如 datetime 資料行中的叢集索引,而此索引在 DATE_CORRELATION_OPTIMIZATION 啟用的情況下應該會有益處。
若要判斷檢視是否以相互關聯統計資料為基礎,請選取 sys.views 目錄檢視的 is_date_correlation_view 資料行。