“dta”命令行工具
“dta”是圖形化數(shù)據(jù)庫引擎調(diào)優(yōu)顧問的命令行版本。命令行工具和圖形化工具都基于它們面對(duì)的負(fù)載提供性能優(yōu)化建議?!癲ta”的語法如下:
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?] ] |
這款工具有大量的參數(shù)可用,然而這些參數(shù)有許多不需要進(jìn)行基本的分析。但是至少,你需要使用那些提供連接到數(shù)據(jù)庫,負(fù)載調(diào)優(yōu),優(yōu)化會(huì)話識(shí)別符,以及存儲(chǔ)優(yōu)化建議位置的參數(shù)。連接涉及的參數(shù)有:“-S”指定服務(wù)名,“-D”指定數(shù)據(jù)庫,而“-E”指定信任連接,“-U”和“-P”可以被用戶指定用戶名和密碼。
待優(yōu)化的負(fù)載既可以是負(fù)載文件,也可以是負(fù)載表?!?if”參數(shù)用來指定負(fù)載文件的位置,而“-it”參數(shù)用來指定負(fù)載表。負(fù)載文件必須是Profiler跟蹤文件(.trc),包含T-SQL命令的SQL腳本(.sql),或者是SQL Server跟蹤文件(.log)。負(fù)載表是包含來自負(fù)載跟蹤的SQL輸出的表。該表是以“數(shù)據(jù)庫名.所有者名.表名”的形式來指定的。
優(yōu)化會(huì)話必須被明確指定,可以用會(huì)話名稱指定,也可以用會(huì)話ID指定。會(huì)話名稱是基于字符的,可以用“-s”參數(shù)指定。如果會(huì)話名稱沒有提供,那么必須提供會(huì)話ID以作為替代。會(huì)話ID必須是數(shù)值型的,它是用“-ID”參數(shù)設(shè)置的。如果會(huì)話名稱指定了,而沒有使用會(huì)話ID,那么“dta”無論如何也會(huì)生成一個(gè)ID。
最后一個(gè)參數(shù)需要一個(gè)基本的“dta”執(zhí)行,來指定存儲(chǔ)“dta”性能建議的目標(biāo)位置,它可以被存儲(chǔ)為腳本文件或者XML。“-of”選項(xiàng)被用戶指定輸出腳本文件名。要生成XML輸出文件,需要指定“-or”或者“-ox”參數(shù)。如果我們沒有指定文件名,“-or”參數(shù)會(huì)生成一個(gè)文件名,“-ox”參數(shù)需要一個(gè)文件名?!?F”參數(shù)可以與任何輸出參數(shù)一起使用,用來強(qiáng)制覆寫存在的同名文件(如果存在的話)。
為了說明“dta”基本參數(shù)的用法,我們來看一個(gè)對(duì)簡(jiǎn)單的“SELECT”語句進(jìn)行優(yōu)化的例子,它使用的是“AdventureWorks2008R2 ”數(shù)據(jù)庫。首先,你要使用下面這段T-SQL,它被存儲(chǔ)在命名為“c:\myScript.sql”的負(fù)載文件中:
USE?AdventureWorks2008R2?;
GO select?* from?Production.transactionHistory where?TransactionDate?=?‘9/1/04’ |
下面的例子展示了基本的“dta”執(zhí)行參數(shù),它們可以被用來獲取性能建議:
dta?-S?xpvirtual1?-E?-D?AdventureWorks2008R2?-if?c:\MyScript.sql
-s?MySessionX?-of?C:\MySessionOutputScript.sql?-F |
前面的例子利用了連接到“AdventureWorks2008R2 ”數(shù)據(jù)庫的信任連接,負(fù)載文件名為“c:\MyScript.sql”,會(huì)話名為“MySessionX”,它輸出性能建議到一個(gè)名為“c:\MySessionOutputScript.sql”的文本文件?!?F”選項(xiàng)被用來覆蓋輸出文件(如果已經(jīng)存在文件的話)。該輸出文件包含下面性能建議:
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 ”列上創(chuàng)建新的索引。這是一個(gè)可行的建議,考慮到在“TransactionHistory.TransactionDate”列沒有索引,在負(fù)載文件中它被用作搜索參數(shù)。
許多其他參數(shù)(不只是基本執(zhí)行的功能)可以控制“dta”提供推薦建議的方式。例如,可以提供一個(gè)列表來限定在調(diào)試期間“dta”會(huì)查看哪些表。還有參數(shù)可以設(shè)置“dta”調(diào)優(yōu)的限制時(shí)間或者事件數(shù)量。這些參數(shù)超出了本章的范圍,但是你可以通過查看圖形化“DTA”來進(jìn)行進(jìn)一步了解,在圖形化“DTA”中包含有許多相同類型的參數(shù)。在“DTA”中你可以優(yōu)化你的調(diào)優(yōu)參數(shù),把參數(shù)導(dǎo)出成XML文件,然后在“dta”工具中利用“-ix”導(dǎo)入這些XML參數(shù),然后運(yùn)行分析。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

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