SQL Server 2008 數(shù)據(jù)庫(kù)引擎優(yōu)化顧問(wèn)介紹
1 數(shù)據(jù)庫(kù)引擎優(yōu)化顧問(wèn)概述
借助 Microsoft SQL Server 數(shù)據(jù)庫(kù)引擎優(yōu)化顧問(wèn),您不必精通數(shù)據(jù)庫(kù)結(jié)構(gòu)或深諳 Microsoft SQL Server,即可選擇和創(chuàng)建索引、索引視圖和分區(qū)的最佳集合。
數(shù)據(jù)庫(kù)引擎優(yōu)化顧問(wèn)分析一個(gè)或多個(gè)數(shù)據(jù)庫(kù)的工作負(fù)荷和物理實(shí)現(xiàn)。工作負(fù)荷是對(duì)要優(yōu)化的一個(gè)或多個(gè)數(shù)據(jù)庫(kù)執(zhí)行的一組 Transact-SQL 語(yǔ)句。在優(yōu)化數(shù)據(jù)庫(kù)時(shí),數(shù)據(jù)庫(kù)引擎優(yōu)化顧問(wèn)將使用跟蹤文件、跟蹤表或 Transact-SQL 腳本作為工作負(fù)荷輸入。可以在 SQL Server Management Studio 中使用查詢(xún)編輯器創(chuàng)建 Transact-SQL 腳本工作負(fù)荷。可以通過(guò)使用 SQL Server Profiler 中的優(yōu)化模板來(lái)創(chuàng)建跟蹤文件和跟蹤表工作負(fù)荷。有關(guān)使用 SQL Server Profiler 創(chuàng)建可用作工作負(fù)荷的跟蹤的信息,請(qǐng)參閱SQL Server Profiler 簡(jiǎn)介。
對(duì)工作負(fù)荷進(jìn)行分析后,數(shù)據(jù)庫(kù)引擎優(yōu)化顧問(wèn)會(huì)建議您添加、刪除、或修改數(shù)據(jù)庫(kù)中的物理設(shè)計(jì)結(jié)構(gòu)。此顧問(wèn)還可針對(duì)應(yīng)收集哪些統(tǒng)計(jì)信息來(lái)備份物理設(shè)計(jì)結(jié)構(gòu)提出建議。物理設(shè)計(jì)結(jié)構(gòu)包括聚集索引、非聚集索引、索引視圖和分區(qū)。數(shù)據(jù)庫(kù)引擎優(yōu)化顧問(wèn)會(huì)推薦一組物理設(shè)計(jì)結(jié)構(gòu),以降低工作負(fù)荷的開(kāi)銷(xiāo)(由查詢(xún)優(yōu)化器估計(jì))。 數(shù)據(jù)庫(kù)引擎優(yōu)化顧問(wèn)的優(yōu)化功能
數(shù)據(jù)庫(kù)引擎優(yōu)化顧問(wèn)具備下列功能:
* 通過(guò)使用查詢(xún)優(yōu)化器分析工作負(fù)荷中的查詢(xún),推薦數(shù)據(jù)庫(kù)的最佳索引組合。 * 為工作負(fù)荷中引用的數(shù)據(jù)庫(kù)推薦對(duì)齊分區(qū)或非對(duì)齊分區(qū)。 * 推薦工作負(fù)荷中引用的數(shù)據(jù)庫(kù)的索引視圖。 * 分析所建議的更改將會(huì)產(chǎn)生的影響,包括索引的使用,查詢(xún)?cè)诒碇g的分布,以及查詢(xún)?cè)诠ぷ髫?fù)荷中的性能。 * 推薦為執(zhí)行一個(gè)小型的問(wèn)題查詢(xún)集而對(duì)數(shù)據(jù)庫(kù)進(jìn)行優(yōu)化的方法。 * 允許通過(guò)指定磁盤(pán)空間約束等高級(jí)選項(xiàng)對(duì)推薦進(jìn)行自定義。 * 提供對(duì)所給工作負(fù)荷的建議執(zhí)行效果的匯總報(bào)告。 * 考慮備選方案,即:您以假定配置的形式提供可能的設(shè)計(jì)結(jié)構(gòu)方案,供數(shù)據(jù)庫(kù)引擎優(yōu)化顧問(wèn)進(jìn)行評(píng)估。
2 數(shù)據(jù)庫(kù)引擎優(yōu)化顧問(wèn)功能 據(jù)庫(kù)引擎優(yōu)化顧問(wèn)提供了一些新功能。通過(guò)這些新功能,無(wú)論是初學(xué)者還是有經(jīng)驗(yàn)的數(shù)據(jù)庫(kù)管理員都能對(duì)數(shù)據(jù)庫(kù)進(jìn)行優(yōu)化,以獲得更好的查詢(xún)性能。以下各部分列出了數(shù)據(jù)庫(kù)引擎優(yōu)化顧問(wèn)的新功能,并進(jìn)行了說(shuō)明: 工作負(fù)荷分析功能得到改進(jìn)
* 處理引用瞬態(tài)表(如臨時(shí)表)的批。 * 不會(huì)因?yàn)樗荒芊治瞿呈录K止優(yōu)化,而是將該事件記錄到優(yōu)化日志中,再繼續(xù)優(yōu)化其他事件。 * 分析和優(yōu)化引用用戶(hù)定義函數(shù)的查詢(xún)。 * 處理跟蹤中的所有 USE 語(yǔ)句,這些語(yǔ)句在優(yōu)化多個(gè)數(shù)據(jù)庫(kù)時(shí)必不可少。 * 使用工作負(fù)荷中的 LoginName 列(如果跟蹤工作負(fù)荷過(guò)程中有此列),以便在執(zhí)行事件的用戶(hù)的環(huán)境中正確優(yōu)化該事件。 * 優(yōu)化觸發(fā)器中的語(yǔ)句。
可伸縮性增強(qiáng)
* 使用工作負(fù)荷壓縮,讓數(shù)據(jù)庫(kù)引擎優(yōu)化顧問(wèn)既可縮短優(yōu)化所需的時(shí)間,又能生成高質(zhì)量的優(yōu)化建議結(jié)果。 * 使用算法以避免生成重復(fù)的統(tǒng)計(jì)信息,從而減少優(yōu)化期間發(fā)生的 I/O 數(shù)量。
優(yōu)化集成
數(shù)據(jù)庫(kù)引擎優(yōu)化顧問(wèn)可以權(quán)衡包括篩選索引在內(nèi)的各種不同類(lèi)型的物理設(shè)計(jì)結(jié)構(gòu)(如索引、索引視圖、分區(qū))所提供的性能。不同結(jié)構(gòu)可以在功能上有所重疊,以減少執(zhí)行任何給定查詢(xún)時(shí)的開(kāi)銷(xiāo),從而可以考慮對(duì)多個(gè)設(shè)計(jì)結(jié)構(gòu)進(jìn)行集成配置,使數(shù)據(jù)庫(kù)引擎優(yōu)化顧問(wèn)能夠提供質(zhì)量更高的建議。例如,如果僅考慮對(duì)一組表的聚集索引,再考慮對(duì)同一組表的水平范圍分區(qū),這并不能提供這兩種物理結(jié)構(gòu)配合使用時(shí)的工作情況。若要了解這兩種結(jié)構(gòu)配合使用的情況,優(yōu)化工具必須執(zhí)行集成優(yōu)化。 優(yōu)化多個(gè)數(shù)據(jù)庫(kù)
應(yīng)用程序經(jīng)常要訪問(wèn)多個(gè)數(shù)據(jù)庫(kù)以完成工作,因此,工作負(fù)荷會(huì)頻繁引用多個(gè)數(shù)據(jù)庫(kù)中的對(duì)象。與 Microsoft SQL Server 2000 中的索引優(yōu)化向?qū)Р煌瑪?shù)據(jù)庫(kù)引擎優(yōu)化顧問(wèn)可以同時(shí)優(yōu)化多個(gè)數(shù)據(jù)庫(kù)。用戶(hù)可以指定一組要優(yōu)化的數(shù)據(jù)庫(kù),而數(shù)據(jù)庫(kù)引擎優(yōu)化顧問(wèn)會(huì)為所有選定數(shù)據(jù)庫(kù)提出建議。有關(guān)此功能的詳細(xì)信息,請(qǐng)參閱優(yōu)化多個(gè)數(shù)據(jù)庫(kù)。 將優(yōu)化開(kāi)銷(xiāo)分?jǐn)偨o測(cè)試服務(wù)器
優(yōu)化較大的工作負(fù)荷會(huì)對(duì)所優(yōu)化的服務(wù)器產(chǎn)生很大的開(kāi)銷(xiāo)。這是因?yàn)樵趦?yōu)化過(guò)程中,數(shù)據(jù)庫(kù)引擎優(yōu)化顧問(wèn)通常需要多次調(diào)用查詢(xún)優(yōu)化器。除了生產(chǎn)服務(wù)器之外,還可以使用測(cè)試服務(wù)器來(lái)消除此問(wèn)題。
在這種情況下,您將優(yōu)化一個(gè)測(cè)試服務(wù)器。測(cè)試服務(wù)器具備與生產(chǎn)服務(wù)器相同的環(huán)境。收到優(yōu)化測(cè)試服務(wù)器而產(chǎn)生的數(shù)據(jù)庫(kù)設(shè)計(jì)配置建議后,可以在維護(hù)期間將該建議應(yīng)用于生產(chǎn)服務(wù)器。
使用測(cè)試服務(wù)器的傳統(tǒng)方法,是將生產(chǎn)服務(wù)器的所有數(shù)據(jù)復(fù)制到測(cè)試服務(wù)器,再優(yōu)化測(cè)試服務(wù)器,然后針對(duì)兩臺(tái)計(jì)算機(jī)的硬件差異調(diào)整產(chǎn)生的建議。數(shù)據(jù)庫(kù)引擎優(yōu)化顧問(wèn)無(wú)需將數(shù)據(jù)復(fù)制到測(cè)試計(jì)算機(jī),也無(wú)需兩臺(tái)計(jì)算機(jī)的硬件相同,就能利用測(cè)試服務(wù)器,從而節(jié)省了時(shí)間和資源。數(shù)據(jù)庫(kù)引擎優(yōu)化顧問(wèn)只將元數(shù)據(jù)、統(tǒng)計(jì)信息和硬件參數(shù)從生產(chǎn)服務(wù)器導(dǎo)入測(cè)試服務(wù)器。然后,數(shù)據(jù)庫(kù)引擎優(yōu)化顧問(wèn)對(duì)測(cè)試服務(wù)器執(zhí)行大容量?jī)?yōu)化操作,而您可以在正常維護(hù)時(shí)將優(yōu)化結(jié)果應(yīng)用于生產(chǎn)服務(wù)器。有關(guān)此功能的詳細(xì)信息,請(qǐng)參閱減輕生產(chǎn)服務(wù)器優(yōu)化負(fù)荷。 命令提示實(shí)用工具和圖形用戶(hù)界面工具
數(shù)據(jù)庫(kù)引擎優(yōu)化顧問(wèn)提供以下兩種用戶(hù)界面:
* dta 命令提示實(shí)用工具,可以通過(guò)編寫(xiě)腳本輕松組合數(shù)據(jù)庫(kù)引擎優(yōu)化顧問(wèn)的功能。 * 數(shù)據(jù)庫(kù)引擎優(yōu)化顧問(wèn)圖形用戶(hù)界面 (GUI) 工具,可以輕松查看優(yōu)化會(huì)話(huà)和結(jié)果。
僅刪除優(yōu)化
數(shù)據(jù)庫(kù)中的物理設(shè)計(jì)結(jié)構(gòu)會(huì)隨時(shí)間積累,數(shù)據(jù)庫(kù)管理員需要一種刪除無(wú)用結(jié)構(gòu)的方法。使用僅刪除優(yōu)化選項(xiàng),可以確定那些不再使用,或?qū)o定工作負(fù)荷用處甚少的現(xiàn)有物理設(shè)計(jì)結(jié)構(gòu)。在使用 dta 命令提示實(shí)用工具時(shí),可以使用 –fx 參數(shù)來(lái)指定此優(yōu)化選項(xiàng)。如果使用的是 GUI,則可以在“優(yōu)化選項(xiàng)”選項(xiàng)卡中選中“僅評(píng)估現(xiàn)有 PDS 的使用率”,以指定此選項(xiàng)。
如果選擇此選項(xiàng),數(shù)據(jù)庫(kù)引擎優(yōu)化顧問(wèn)將永不建議任何新結(jié)構(gòu)。因此,此選項(xiàng)不能與添加索引、索引視圖或分區(qū)的其他選項(xiàng)一起使用。僅刪除優(yōu)化選項(xiàng)也不能與保存全部現(xiàn)有結(jié)構(gòu)的選項(xiàng)一起使用。有關(guān)可用于數(shù)據(jù)庫(kù)引擎優(yōu)化顧問(wèn)的優(yōu)化選項(xiàng)的詳細(xì)信息,請(qǐng)參閱可用的優(yōu)化選項(xiàng)。 XML 支持
可以在數(shù)據(jù)庫(kù)引擎優(yōu)化顧問(wèn) XML 輸入文件中,定義可使用數(shù)據(jù)庫(kù)引擎優(yōu)化顧問(wèn) GUI 以及 dta 命令提示實(shí)用工具執(zhí)行的所有優(yōu)化操作。XML 輸入文件使用已發(fā)布的數(shù)據(jù)庫(kù)引擎優(yōu)化顧問(wèn) XML 架構(gòu),該架構(gòu)可以在 Microsoft SQL Server 安裝目錄的以下位置中找到:
C:Program FilesMicrosoft SQL Server100ToolsBinnschemassqlserver20047dtadtaschema.xsd
您還可以從 Microsoft 網(wǎng)站上的數(shù)據(jù)庫(kù)引擎優(yōu)化顧問(wèn)架構(gòu)下載該架構(gòu)。
通過(guò)使用 XML 輸入文件,您可以在優(yōu)化數(shù)據(jù)庫(kù)時(shí)使用常用的 XML 工具,有經(jīng)驗(yàn)的數(shù)據(jù)庫(kù)管理員可以有更大的靈活性。例如,使用 XML 輸入文件,您可以指定現(xiàn)有的和假設(shè)的物理設(shè)計(jì)結(jié)構(gòu)(索引、索引視圖、分區(qū))的配置,然后,可以按應(yīng)用了此配置的情況,使用 dta 命令提示實(shí)用工具優(yōu)化數(shù)據(jù)庫(kù)。這可以實(shí)現(xiàn)假設(shè)分析,又不會(huì)在優(yōu)化前產(chǎn)生實(shí)施新配置的開(kāi)銷(xiāo)。有關(guān)數(shù)據(jù)庫(kù)引擎優(yōu)化顧問(wèn) XML 支持的詳細(xì)信息,請(qǐng)參閱 XML 輸入文件引用(數(shù)據(jù)庫(kù)引擎優(yōu)化顧問(wèn))、使用 XML 輸入文件進(jìn)行優(yōu)化和使用數(shù)據(jù)庫(kù)引擎優(yōu)化顧問(wèn)進(jìn)行探索性分析。 用戶(hù)指定的配置和假設(shè)分析支持
使用數(shù)據(jù)庫(kù)引擎優(yōu)化顧問(wèn),用戶(hù)可以提供物理設(shè)計(jì)結(jié)構(gòu)(索引、索引視圖和分區(qū)策略)的假設(shè)配置作為優(yōu)化輸入。然后,可以按已經(jīng)應(yīng)用了該配置的情況,優(yōu)化一個(gè)或多個(gè)數(shù)據(jù)庫(kù)。這樣一來(lái),您就可以在發(fā)生應(yīng)用這些結(jié)構(gòu)產(chǎn)生的開(kāi)銷(xiāo)之前,對(duì)一組特定物理設(shè)計(jì)結(jié)構(gòu)組作出假設(shè)分析。數(shù)據(jù)庫(kù)引擎優(yōu)化顧問(wèn) XML 架構(gòu)完全支持此功能。可以在 XML 輸入文件中指定希望處理的配置,然后使用 dta 命令提示實(shí)用工具啟動(dòng)優(yōu)化會(huì)話(huà)。有關(guān)此功能的詳細(xì)信息,請(qǐng)參閱使用數(shù)據(jù)庫(kù)引擎優(yōu)化顧問(wèn)進(jìn)行探索性分析。 分析報(bào)告
優(yōu)化會(huì)話(huà)完成后,數(shù)據(jù)庫(kù)引擎優(yōu)化顧問(wèn)將以文本格式或 XML 格式生成若干分析報(bào)告。這些報(bào)告提供的信息包括工作負(fù)荷中發(fā)生的查詢(xún)開(kāi)銷(xiāo)、工作負(fù)荷中事件的發(fā)生頻率以及查詢(xún)及其引用的索引之間的關(guān)系等。可以使用數(shù)據(jù)庫(kù)引擎優(yōu)化顧問(wèn) GUI 查看報(bào)告,也可以使用常用的 XML 編輯器打開(kāi)以 XML 格式生成的報(bào)告。有關(guān)數(shù)據(jù)庫(kù)引擎優(yōu)化顧問(wèn)生成的分析報(bào)告的詳細(xì)信息,請(qǐng)參閱選擇數(shù)據(jù)庫(kù)引擎優(yōu)化顧問(wèn)報(bào)告。 優(yōu)化會(huì)話(huà)
在開(kāi)始分析前,數(shù)據(jù)庫(kù)引擎優(yōu)化顧問(wèn)會(huì)提示您創(chuàng)建一個(gè)唯一的名稱(chēng)或編號(hào),來(lái)標(biāo)識(shí)優(yōu)化會(huì)話(huà)。完成工作負(fù)荷分析或停止分析后,數(shù)據(jù)庫(kù)引擎優(yōu)化顧問(wèn)將保存優(yōu)化會(huì)話(huà)信息,并將其與開(kāi)始優(yōu)化前提供的標(biāo)識(shí)符關(guān)聯(lián)起來(lái)。您可以使用會(huì)話(huà)標(biāo)識(shí)符將現(xiàn)有會(huì)話(huà)重新載入數(shù)據(jù)庫(kù)引擎優(yōu)化顧問(wèn) GUI,在此可以查看優(yōu)化結(jié)果和報(bào)告。使用優(yōu)化會(huì)話(huà)可以輕松比較各個(gè)時(shí)間段的會(huì)話(huà)結(jié)果。有關(guān)使用優(yōu)化會(huì)話(huà)的詳細(xì)信息,請(qǐng)參閱使用會(huì)話(huà)監(jiān)視器評(píng)估優(yōu)化建議。 使用 dta 實(shí)用工具時(shí)才可用的功能
使用數(shù)據(jù)庫(kù)引擎優(yōu)化顧問(wèn) GUI 時(shí),以下各部分中列出的優(yōu)化選項(xiàng)當(dāng)前不可用。 在命令提示符下或使用 XML 輸入文件時(shí)
在命令提示符下運(yùn)行 dta 實(shí)用工具時(shí),或通過(guò)使用 -ix 命令提示符參數(shù)將 XML 輸入文件用于該實(shí)用工具時(shí),您可以指定:
* 優(yōu)化日志名稱(chēng)(-e 命令提示符參數(shù),或 TableName 元素)。 * 要優(yōu)化的事件數(shù)(-n 命令提示符參數(shù),或 NumberOfEvents 元素)。 * 由數(shù)據(jù)庫(kù)引擎優(yōu)化顧問(wèn)推薦的索引中的最大鍵列數(shù)(-c 命令提示符參數(shù),或 MaxKeyColumnsInIndex 元素)。 * 數(shù)據(jù)庫(kù)引擎優(yōu)化顧問(wèn)對(duì)推薦的配置提出的最小改進(jìn)(-m 命令提示符參數(shù),或 MinPercentageImprovement 元素)。
使用 XML 輸入文件時(shí)
除了上述功能之外,在將 XML 輸入文件與 dta 實(shí)用工具一起使用時(shí),還可以:
* 使用測(cè)試服務(wù)器/生產(chǎn)服務(wù)器方案,其中包括在測(cè)試服務(wù)器上創(chuàng)建 shell 數(shù)據(jù)庫(kù)(TestServer 元素)。 * 在 XML 輸入文件中指定工作負(fù)荷內(nèi)聯(lián)(EventString 元素)。 * 忽略工作負(fù)荷中的常量(IgnoreConstantsInWorkload 元素)。
在命令提示符下
除了上述功能之外,在命令提示符下運(yùn)行 dta 實(shí)用工具時(shí),還可以:
* 指定靜默模式,實(shí)用工具在該模式下運(yùn)行時(shí)不顯示任何反饋消息(-q 命令提示符參數(shù))。 * 優(yōu)化并自動(dòng)應(yīng)用優(yōu)化建議(-a 命令提示符參數(shù))。
