“dta”命令行工具
“dta”是圖形化數據庫引擎調優顧問的命令行版本。命令行工具和圖形化工具都基于它們面對的負載提供性能優化建議。“dta”的語法如下:
Dta?[?-??]?|
[ [?-S?server_name[?\instance?]?] { {?-U?login_id?[-P?password?]?} |?–E?} {?-D?database_name?[?,...n?]?} [-d?database_name?] [?-Tl?table_list?|?-Tf?table_list_file?] {?-if?workload_file?|?-it?workload_trace_table_name?} {?-s?session_name?|?-ID?session_ID?} [?-F?] [?-of?output_script_file_name?] [?-or?output_xml_report_file_name?] [?-ox?output_XML_file_name?] [?-rl?analysis_report_list?[?,...n?]?] [?-ix?input_XML_file_name?] [?-A?time_for_tuning_in_minutes?] [?-n?number_of_events?] [?-m?minimum_improvement?] [?-fa?physical_design_structures_to_add?] [?-fp?partitioning_strategy?] [?-fk?keep_existing_option?] [?-fx?drop_only_mode?] [?-B?storage_size?] [?-c?max_key_columns_in_index?] [?-C?max_columns_in_index?] [?-e?|?-e?tuning_log_name?] [?-N?online_option] [?-q?] [?-u?] [?-x?] [?-a?] ] |
這款工具有大量的參數可用,然而這些參數有許多不需要進行基本的分析。但是至少,你需要使用那些提供連接到數據庫,負載調優,優化會話識別符,以及存儲優化建議位置的參數。連接涉及的參數有:“-S”指定服務名,“-D”指定數據庫,而“-E”指定信任連接,“-U”和“-P”可以被用戶指定用戶名和密碼。
待優化的負載既可以是負載文件,也可以是負載表。“-if”參數用來指定負載文件的位置,而“-it”參數用來指定負載表。負載文件必須是Profiler跟蹤文件(.trc),包含T-SQL命令的SQL腳本(.sql),或者是SQL Server跟蹤文件(.log)。負載表是包含來自負載跟蹤的SQL輸出的表。該表是以“數據庫名.所有者名.表名”的形式來指定的。
優化會話必須被明確指定,可以用會話名稱指定,也可以用會話ID指定。會話名稱是基于字符的,可以用“-s”參數指定。如果會話名稱沒有提供,那么必須提供會話ID以作為替代。會話ID必須是數值型的,它是用“-ID”參數設置的。如果會話名稱指定了,而沒有使用會話ID,那么“dta”無論如何也會生成一個ID。
最后一個參數需要一個基本的“dta”執行,來指定存儲“dta”性能建議的目標位置,它可以被存儲為腳本文件或者XML。“-of”選項被用戶指定輸出腳本文件名。要生成XML輸出文件,需要指定“-or”或者“-ox”參數。如果我們沒有指定文件名,“-or”參數會生成一個文件名,“-ox”參數需要一個文件名。“-F”參數可以與任何輸出參數一起使用,用來強制覆寫存在的同名文件(如果存在的話)。
為了說明“dta”基本參數的用法,我們來看一個對簡單的“SELECT”語句進行優化的例子,它使用的是“AdventureWorks2008R2 ”數據庫。首先,你要使用下面這段T-SQL,它被存儲在命名為“c:\myScript.sql”的負載文件中:
USE?AdventureWorks2008R2?;
GO select?* from?Production.transactionHistory where?TransactionDate?=?‘9/1/04’ |
下面的例子展示了基本的“dta”執行參數,它們可以被用來獲取性能建議:
dta?-S?xpvirtual1?-E?-D?AdventureWorks2008R2?-if?c:\MyScript.sql
-s?MySessionX?-of?C:\MySessionOutputScript.sql?-F |
前面的例子利用了連接到“AdventureWorks2008R2 ”數據庫的信任連接,負載文件名為“c:\MyScript.sql”,會話名為“MySessionX”,它輸出性能建議到一個名為“c:\MySessionOutputScript.sql”的文本文件。“-F”選項被用來覆蓋輸出文件(如果已經存在文件的話)。該輸出文件包含下面性能建議:
se?[AdventureWorks2008R2]
go CREATE?NONCLUSTERED?INDEX?[_dta_index_TransactionHistory_5] ON?[Production].[TransactionHistory] ( [TransactionDate]?ASC ) INCLUDE?(?[TransactionID], [ProductID], [ReferenceOrderID], [ReferenceOrderLineID], [TransactionType], [Quantity], [ActualCost], [ModifiedDate]) WITH?(SORT_IN_TEMPDB?=?OFF,?IGNORE_DUP_KEY?=?OFF, DROP_EXISTING?=?OFF,?ONLINE?=?OFF)?ON?[PRIMARY] go |
總之,“dta”輸出推薦在“TransactionHistory ”表的“TransactionDate ”列上創建新的索引。這是一個可行的建議,考慮到在“TransactionHistory.TransactionDate”列沒有索引,在負載文件中它被用作搜索參數。
許多其他參數(不只是基本執行的功能)可以控制“dta”提供推薦建議的方式。例如,可以提供一個列表來限定在調試期間“dta”會查看哪些表。還有參數可以設置“dta”調優的限制時間或者事件數量。這些參數超出了本章的范圍,但是你可以通過查看圖形化“DTA”來進行進一步了解,在圖形化“DTA”中包含有許多相同類型的參數。在“DTA”中你可以優化你的調優參數,把參數導出成XML文件,然后在“dta”工具中利用“-ix”導入這些XML參數,然后運行分析。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

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