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