使用測試伺服器的考量
適用於: 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 建立於測試伺服器中的殼層資料庫中有物件遺漏,而使 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 資料行。