優化較大的工作負荷會對所優化的服務器產生很大的開銷。開銷是由數據庫引擎優化顧問在優化進程中多次調用查詢優化器導致的。如果除生產服務器以外,再使用一臺測試服務器,則可以消除此開銷問題。
使用測試服務器的傳統方法是將所有數據從生產服務器復制到測試服務器,優化測試服務器,然后在生產服務器上實現建議。此過程可以消除對生產服務器的性能影響,但這不是最佳解決方案。例如,將大量數據從生產服務器復制到測試服務器可能消耗大量時間和資源。此外,測試服務器硬件很少像生產服務器中部署的硬件那樣功能強大。優化進程依賴于查詢優化器,而它生成的建議部分依賴于基礎硬件。如果測試服務器硬件和生產服務器硬件不相同,數據庫引擎優化顧問建議的質量就會降低。
若要避免出現這些問題,數據庫引擎優化顧問將通過把大部分優化負荷轉移到測試服務器,優化生產服務器上的數據庫。它通過使用生產服務器硬件配置信息,而不是真正地將數據從生產服務器復制到測試服務器,來執行該操作。數據庫引擎優化顧問不會將實際數據從生產服務器復制到測試服務器中。它僅復制元數據和必要的統計信息。
下列步驟概要介紹了用于在測試服務器上優化生產數據庫的過程:
1.
??
確保兩臺服務器上都存在要使用測試服務器的用戶。
開始之前,請確保兩臺服務器上都存在要使用測試服務器來優化生產服務器上的數據庫的用戶。這就需要您在測試服務器上創建用戶及其登錄帳戶。如果您在兩臺計算機上都是
sysadmin
固定服務器角色成員,將不需要執行此步驟。
2.
??
優化測試服務器上的工作負荷。
若要優化測試服務器上的工作負荷,必須通過
dta
命令行實用工具使用
XML
輸入文件。在
XML
輸入文件中,在
TuningOptions
父元素下使用
TestServer
子元素指定測試服務器的名稱,并為其他子元素指定值。
在優化進程中,數據庫引擎優化顧問將在測試服務器上創建
Shell
數據庫。若要創建此
Shell
數據庫并對其進行優化,數據庫引擎優化顧問需要在下列情況下調用生產服務器:
a.
????
數據庫引擎優化顧問將元數據從生產數據庫導入到測試服務器
Shell
數據庫。此元數據包括空表、索引、視圖、存儲過程和觸發器等。這使得對測試服務器
Shell
數據庫執行工作負荷查詢成為可能。
b.
????
數據庫引擎優化顧問從生產服務器導入統計信息,以便查詢優化器可以準確優化對測試服務器的查詢。
c.
????
數據庫引擎優化顧問從生產服務器導入指定處理器數和可用內存量的硬件參數,為查詢優化器提供生成查詢計劃所需的信息。
3.
??
數據庫引擎優化顧問優化完測試服務器
Shell
數據庫后,將生成優化建議。
4.
??
將通過優化測試服務器得到的建議應用于生產服務器。
注意:
在數據庫引擎優化顧問的圖形用戶界面
(GUI)
中不支持測試服務器優化功能。
示例
首先,請確保測試服務器和生產服務器上都存在要執行優化的用戶。
將用戶信息復制到測試服務器后,就可以在數據庫引擎優化顧問
XML
輸入文件中定義測試服務器優化會話。下面的示例
XML
輸入文件說明如何使用數據庫引擎優化顧問指定測試服務器來優化數據庫。
在此示例中,
MyDatabaseName
數據庫在
MyServerName
上進行優化。
Transact-SQL
腳本(即
MyWorkloadScript.sql
)用作工作負荷。此工作負荷包含對
MyDatabaseName
執行的事件。查詢優化器對此數據庫的大部分調用操作(作為優化進程的一部分發生)是由駐留在
MyTestServerName
上的
Shell
數據庫實現的。
Shell
數據庫由元數據和統計信息構成。此進程會將優化開銷卸載到測試服務器。數據庫引擎優化顧問使用此
XML
輸入文件生成優化建議時,應只考慮索引
(<FeatureSet>IDX</FeatureSet>)
而不考慮分區,并且不需要在
MyDatabaseName
中保留現有的任何物理設計結構。
<?xml version="1.0" encoding="utf-16" ?> <DTAXML xmlns:xsi="http://www.w3.org/
<DTAInput> ????
<Server> ??????
<Name>MyServerName</Name> ?????
?<Database> ????????<Name>MyDatabaseName</Name> ??????</Database> ???
?</Server> ???
?<Workload> ??????
<File>MyWorkloadScript.sql</File> ????
</Workload> ????
<TuningOptions> ??????
<TestServer>MyTestServerName</TestServer> ????
??<FeatureSet>IDX</FeatureSet> ?????
?<Partitioning>NONE</Partitioning> ?????
?<KeepExisting>NONE</KeepExisting> ???
?</TuningOptions> ??
</DTAInput>
</DTAXML>
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1441582
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
