利用SQL Server 2005減輕生產(chǎn)服務(wù)器優(yōu)化負(fù)荷
優(yōu)化較大的工作負(fù)荷會(huì)對(duì)所優(yōu)化的服務(wù)器產(chǎn)生很大的開(kāi)銷(xiāo)。開(kāi)銷(xiāo)是由數(shù)據(jù)庫(kù)引擎優(yōu)化顧問(wèn)在優(yōu)化進(jìn)程中多次調(diào)用查詢(xún)優(yōu)化器導(dǎo)致的。如果除生產(chǎn)服務(wù)器以外,再使用一臺(tái)測(cè)試服務(wù)器,則可以消除此開(kāi)銷(xiāo)問(wèn)題。
數(shù)據(jù)庫(kù)引擎優(yōu)化顧問(wèn)如何使用測(cè)試服務(wù)器
使用測(cè)試服務(wù)器的傳統(tǒng)方法是將所有數(shù)據(jù)從生產(chǎn)服務(wù)器復(fù)制到測(cè)試服務(wù)器,優(yōu)化測(cè)試服務(wù)器,然后在生產(chǎn)服務(wù)器上實(shí)現(xiàn)建議。此過(guò)程可以消除對(duì)生產(chǎn)服務(wù)器的性能影響,但這不是最佳解決方案。例如,將大量數(shù)據(jù)從生產(chǎn)服務(wù)器復(fù)制到測(cè)試服務(wù)器可能消耗大量時(shí)間和資源。此外,測(cè)試服務(wù)器硬件很少像生產(chǎn)服務(wù)器中部署的硬件那樣功能強(qiáng)大。優(yōu)化進(jìn)程依賴(lài)于查詢(xún)優(yōu)化器,而它生成的建議部分依賴(lài)于基礎(chǔ)硬件。如果測(cè)試服務(wù)器硬件和生產(chǎn)服務(wù)器硬件不相同,數(shù)據(jù)庫(kù)引擎優(yōu)化顧問(wèn)建議的質(zhì)量就會(huì)降低。
若要避免出現(xiàn)這些問(wèn)題,數(shù)據(jù)庫(kù)引擎優(yōu)化顧問(wèn)將通過(guò)把大部分優(yōu)化負(fù)荷轉(zhuǎn)移到測(cè)試服務(wù)器,優(yōu)化生產(chǎn)服務(wù)器上的數(shù)據(jù)庫(kù)。它通過(guò)使用生產(chǎn)服務(wù)器硬件配置信息,而不是真正地將數(shù)據(jù)從生產(chǎn)服務(wù)器復(fù)制到測(cè)試服務(wù)器,來(lái)執(zhí)行該操作。數(shù)據(jù)庫(kù)引擎優(yōu)化顧問(wèn)不會(huì)將實(shí)際數(shù)據(jù)從生產(chǎn)服務(wù)器復(fù)制到測(cè)試服務(wù)器中。它僅復(fù)制元數(shù)據(jù)和必要的統(tǒng)計(jì)信息。
下列步驟概要介紹了用于在測(cè)試服務(wù)器上優(yōu)化生產(chǎn)數(shù)據(jù)庫(kù)的過(guò)程:
1.確保兩臺(tái)服務(wù)器上都存在要使用測(cè)試服務(wù)器的用戶(hù)。開(kāi)始之前,請(qǐng)確保兩臺(tái)服務(wù)器上都存在要使用測(cè)試服務(wù)器來(lái)優(yōu)化生產(chǎn)服務(wù)器上的數(shù)據(jù)庫(kù)的用戶(hù)。這就需要您在測(cè)試服務(wù)器上創(chuàng)建用戶(hù)及其登錄帳戶(hù)。如果您在兩臺(tái)計(jì)算機(jī)上都是 sysadmin 固定服務(wù)器角色成員,將不需要執(zhí)行此步驟。
2.優(yōu)化測(cè)試服務(wù)器上的工作負(fù)荷。若要優(yōu)化測(cè)試服務(wù)器上的工作負(fù)荷,必須通過(guò) dta 命令行實(shí)用工具使用 XML 輸入文件。在 XML 輸入文件中,在 TuningOptions 父元素下使用 TestServer 子元素指定測(cè)試服務(wù)器的名稱(chēng),并為其他子元素指定值。在優(yōu)化進(jìn)程中,數(shù)據(jù)庫(kù)引擎優(yōu)化顧問(wèn)將在測(cè)試服務(wù)器上創(chuàng)建 Shell 數(shù)據(jù)庫(kù)。若要?jiǎng)?chuàng)建此 Shell 數(shù)據(jù)庫(kù)并對(duì)其進(jìn)行優(yōu)化,數(shù)據(jù)庫(kù)引擎優(yōu)化顧問(wèn)需要在下列情況下調(diào)用生產(chǎn)服務(wù)器:
a.;;數(shù)據(jù)庫(kù)引擎優(yōu)化顧問(wèn)將元數(shù)據(jù)從生產(chǎn)數(shù)據(jù)庫(kù)導(dǎo)入到測(cè)試服務(wù)器 Shell 數(shù)據(jù)庫(kù)。此元數(shù)據(jù)包括空表、索引、視圖、存儲(chǔ)過(guò)程和觸發(fā)器等。這使得對(duì)測(cè)試服務(wù)器 Shell 數(shù)據(jù)庫(kù)執(zhí)行工作負(fù)荷查詢(xún)成為可能。
b.;;數(shù)據(jù)庫(kù)引擎優(yōu)化顧問(wèn)從生產(chǎn)服務(wù)器導(dǎo)入統(tǒng)計(jì)信息,以便查詢(xún)優(yōu)化器可以準(zhǔn)確優(yōu)化對(duì)測(cè)試服務(wù)器的查詢(xún)。
c.;;數(shù)據(jù)庫(kù)引擎優(yōu)化顧問(wèn)從生產(chǎn)服務(wù)器導(dǎo)入指定處理器數(shù)和可用內(nèi)存量的硬件參數(shù),為查詢(xún)優(yōu)化器提供生成查詢(xún)計(jì)劃所需的信息。
3.數(shù)據(jù)庫(kù)引擎優(yōu)化顧問(wèn)優(yōu)化完測(cè)試服務(wù)器 Shell 數(shù)據(jù)庫(kù)后,將生成優(yōu)化建議。
4.將通過(guò)優(yōu)化測(cè)試服務(wù)器得到的建議應(yīng)用于生產(chǎn)服務(wù)器。
注意:
在數(shù)據(jù)庫(kù)引擎優(yōu)化顧問(wèn)的圖形用戶(hù)界面 (GUI) 中不支持測(cè)試服務(wù)器優(yōu)化功能。
示例
首先,請(qǐng)確保測(cè)試服務(wù)器和生產(chǎn)服務(wù)器上都存在要執(zhí)行優(yōu)化的用戶(hù)。
將用戶(hù)信息復(fù)制到測(cè)試服務(wù)器后,就可以在數(shù)據(jù)庫(kù)引擎優(yōu)化顧問(wèn) XML 輸入文件中定義測(cè)試服務(wù)器優(yōu)化會(huì)話(huà)。下面的示例 XML 輸入文件說(shuō)明如何使用數(shù)據(jù)庫(kù)引擎優(yōu)化顧問(wèn)指定測(cè)試服務(wù)器來(lái)優(yōu)化數(shù)據(jù)庫(kù)。
在此示例中,MyDatabaseName 數(shù)據(jù)庫(kù)在 MyServerName 上進(jìn)行優(yōu)化。Transact-SQL 腳本(即 MyWorkloadScript.sql)用作工作負(fù)荷。此工作負(fù)荷包含對(duì) MyDatabaseName 執(zhí)行的事件。查詢(xún)優(yōu)化器對(duì)此數(shù)據(jù)庫(kù)的大部分調(diào)用操作(作為優(yōu)化進(jìn)程的一部分發(fā)生)是由駐留在 MyTestServerName 上的 Shell 數(shù)據(jù)庫(kù)實(shí)現(xiàn)的。Shell 數(shù)據(jù)庫(kù)由元數(shù)據(jù)和統(tǒng)計(jì)信息構(gòu)成。此進(jìn)程會(huì)將優(yōu)化開(kāi)銷(xiāo)卸載到測(cè)試服務(wù)器。數(shù)據(jù)庫(kù)引擎優(yōu)化顧問(wèn)使用此 XML 輸入文件生成優(yōu)化建議時(shí),應(yīng)只考慮索引 (<FeatureSet>IDX</FeatureSet>) 而不考慮分區(qū),并且不需要在 MyDatabaseName 中保留現(xiàn)有的任何物理設(shè)計(jì)結(jié)構(gòu)。
<?xml version='1.0' encoding='utf-16' ?> <DTAXML xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns='http://schemas.microsoft.com/sqlserver/2004/07/dta'>
<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>
http://blog.csdn.net/JDMBA/archive/2006/12/13/1441582.aspx
