dta 实用工具
dta 实用工具是数据库引擎优化顾问的命令提示符版。通过 dta 实用工具,您可以在应用程序和脚本中使用数据库引擎优化顾问功能。
与数据库引擎优化顾问一样,dta 实用工具可以分析工作负荷,并可为该工作负荷推荐可改进服务器性能的物理设计结构。工作负荷可以是 SQL Server Profiler 跟踪文件或跟踪表,也可以是 Transact-SQL 脚本。物理设计结构包括索引、索引视图和分区。分析了工作负荷后,dta 实用工具将生成数据库物理设计结构建议,并可生成实现该建议所需的脚本。可以在命令行提示符处,使用 -if 或 -it 参数指定工作负荷。也可以在命令提示符处,使用 -ix 参数指定 XML 输入文件。在这种情况下,在 XML 输入文件中指定工作负荷。
语法
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 }
{ -ssession_name | -IDsession_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 ]
[ -fi ]
[ -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 ]
]
参数
-?
显示使用信息。-Atime_for_tuning_in_minutes
指定优化时间限制 (分钟)。dta 使用指定的时间优化工作负荷,并生成一个包含建议的物理设计更改的脚本。默认情况下,dta 采用的优化时间为 8 小时。指定 0 可以不限制优化时间。dta 可能在限制时间之前完成整个工作负荷的优化。但是,为确保整个工作负荷都得到优化,我们建议您指定不受限制的优化时间 (-A 0)。-a
优化工作负荷和应用建议时不作提示。-Bstorage_size
指定推荐的索引和分区可以使用的最大空间 (MB)。优化多个数据库时,建议对所有数据库都进行空间计算。默认情况下,dta 采用下列存储大小中较小的一个:当前原始数据大小的三倍,包括数据库中表的堆和聚集索引的总大小。
所有附加的磁盘驱动器的可用空间加上原始数据的大小。
默认存储大小不包括非聚集索引和索引视图。
-Cmax_columns_in_index
指定 dta 推荐的索引中的最大列数。该最大值视 SQL Server 的版本而定。对于 SQL Server 2000,最大值为 16,对于 SQL Server 2005 和 SQL Server 2008,最大值为 1024。默认情况下,该参数设置为 16。-cmax_key_columns_in_index
指定 dta 推荐的索引中的最大键列数。默认值为 16,允许该最大值。该参数仅适用于 SQL Server 2005 和 SQL Server 2008。dta 也会考虑创建带有包含列的索引。建议的包含列的索引可能会超出此参数中指定的列数。-Ddatabase_name
指定要优化的每个数据库的名称。第一个数据库是默认数据库。可以指定多个数据库,各数据库名称用逗号进行分隔。例如:dta –D database_name1, database_name2...
此外,也可以在指定多个数据库时,使用 –D 参数逐个指定数据库名称。例如:
dta –D database_name1 -D database_name2... n
-D 参数是必需的。如果尚未指定 -d 参数,则 dta 将默认连接到工作负荷中第一个 USE database_name 子句指定的数据库。如果工作负荷中没有显式的 USE database_name 子句,则必须使用 -d 参数。
例如,如果有一个工作负荷未包含显式的 USE database_name 子句,则在使用以下 dta 命令时将不会生成建议:
dta -D db_name1, db_name2...
但是,如果使用同一工作负荷时使用了以下带 -d 参数的 dta 命令,则将生成建议:
dta -D db_name1, db_name2 -d db_name1
-ddatabase_name
指定优化工作负荷时 dta 连接到的第一个数据库。只能为此参数指定一个数据库。例如:dta -d adventureworks ...
如果指定多个数据库名称,dta 将返回错误。-d 参数是可选的。
如果使用 XML 输入文件,则可使用 TuningOptions 元素下的 DatabaseToConnect 元素来指定 dta 连接的第一个数据库。有关详细信息,请参阅XML 输入文件引用(数据库引擎优化顾问)。
如果只优化一个数据库,则 -d 参数的功能将类似于 sqlcmd 实用工具中的 -d 参数的功能,但不执行 USE database_name 语句。有关详细信息,请参阅 sqlcmd 实用工具。
-E
使用可信连接而不请求密码。必须使用指定登录 ID 的 -E 参数或 -U 参数。-etuning_log_name
指定 dta 记录其无法优化的事件的表或文件的名称。表的创建位置是执行优化的服务器。如果使用表,则用以下格式指定其名称:[database_name].[owner_name].table_name。下表显示了每个参数的默认值:
参数
默认值
database_name
使用 –D 选项指定的 database_name
owner_name
dbo
注意
owner_name 必须为 dbo。如果指定了其他值,则 dta 执行将失败并返回错误。table_name
无
如果使用文件,则指定 .xml 作为其扩展名。例如,TuningLog.xml。
注意
如果删除该会话,则 dta 实用工具不会删除用户指定的优化日志表的内容。优化超大型工作负荷时,建议为优化日志指定一个表。由于优化大型工作负荷可导致优化日志增大,因此使用表时删除会话的速度可快得多。
-F
允许 dta 覆盖现有的输出文件。如果已经存在同名输出文件,并且没有指定 -F,则 dta 将返回错误。-F 可以与 -of、-or 或 -ox 配合使用。-faphysical_design_structures_to_add
指定 dta 应在建议中包括的物理设计结构的类型。下表列出并说明了可为此参数指定的值。如果未指定值,dta 将使用默认值 -faIDX。-fi
指定将在新建议中考虑筛选的索引。有关详细信息,请参阅筛选索引设计准则。-fkkeep_existing_option
指定 dta 在生成其建议时必须保留的现有物理设计结构。下表列出并介绍了可以为此参数指定的值:
<div class="caption">
</div>
<div class="tableSection">
<table>
<colgroup>
<col style="width: 50%" />
<col style="width: 50%" />
</colgroup>
<thead>
<tr class="header">
<th><p>值</p></th>
<th><p>说明</p></th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><p>NONE</p></td>
<td><p>无现有结构</p></td>
</tr>
<tr class="even">
<td><p>ALL</p></td>
<td><p>所有现有结构</p></td>
</tr>
<tr class="odd">
<td><p>ALIGNED</p></td>
<td><p>所有分区对齐结构。</p></td>
</tr>
<tr class="even">
<td><p>CL_IDX</p></td>
<td><p>表中的所有聚集索引</p></td>
</tr>
<tr class="odd">
<td><p>IDX</p></td>
<td><p>表中的所有聚集索引和非聚集索引</p></td>
</tr>
</tbody>
</table>
</div>
-fppartitioning_strategy
指定 dta 建议的新物理设计结构(索引和索引视图)是否应进行分区以及如何进行分区。下表列出并介绍了可以为此参数指定的值:值
说明
NONE
不分区
FULL
完全分区(选择该值可增强性能)
ALIGNED
仅限对齐分区(选择该值可增强可管理性)
ALIGNED 表示在 dta 生成的建议中,每个建议的索引都完全按定义该索引的基础表所用的方式进行分区。索引视图中的非聚集索引与索引视图对齐。只能为此参数指定一个值。默认值为 -fpNONE。
-fxdrop_only_mode
指定 dta 只考虑删除现有物理设计结构。没有考虑任何新的物理设计结构。如果指定此选项,dta 将评估现有物理设计结构的使用情况,并建议删除很少使用的结构。此参数不带任何值,不能与 -fa、-fp 或 -fk ALL 参数一起使用。-IDsession_ID
为优化会话指定一个数字标识符。如果不指定该标识符,则 dta 将生成一个 ID 号。可以使用此标识符查看现有优化会话的信息。如果不指定 -ID 值,则必须用 -s 指定会话名。-ifworkload_file
指定用作优化输入的工作负荷文件的路径和文件名。该文件必须采用下列格式之一:.trc(SQL Server Profiler 跟踪文件)、.sql(SQL 文件)或 .log(SQL Server 跟踪文件)。必须指定一个工作负荷文件或一个工作负荷表。-itworkload_trace_table_name
指定包含用于优化的工作负荷跟踪的表名。用以下格式指定该名称:[database_name]。[owner_name]**.**table_name.下表显示了每个参数的默认值:
参数
默认值
database_name
使用 –D 选项指定的 database_name。
owner_name
dbo。
table_name
无。
注意
owner_name 必须为 dbo。如果指定了其他任何值,则 dta 执行将失败并返回错误。另请注意,必须指定一个工作负荷表或一个工作负荷文件。
-ixinput_XML_file_name
指定包含 dta 输入信息的 XML 文件的名称。该文件必须是符合 DTASchema.xsd 的有效 XML 文档。在命令提示符中指定的优化选项参数将覆盖与其冲突的 XML 文件中的相应值。唯一的例外情况是:在计算模式下,在 XML 输入文件中输入用户指定的配置。例如,如果在 XML 输入文件的 Configuration 元素中输入了配置,并将 EvaluateConfiguration 元素指定为优化选项之一,则 XML 输入文件中指定的优化选项将覆盖命令提示符中输入的任何优化选项。-mminimum_improvement
指定推荐的配置必须满足的最小改进百分比。-Nonline_option
指定是否联机创建物理设计结构。下表列出并说明了可为此参数指定的值:值
说明
OFF
建议的物理设计结构都无法联机创建。
ON
所有建议的物理设计结构都可以联机创建。
MIXED
数据库引擎优化顾问会尝试建议可以联机创建的物理设计结构。
如果索引是联机创建的,则在其对象定义中追加 ONLINE = ON。
-nnumber_of_events
指定 dta 应在工作负荷中优化的事件数。如果指定此参数,并且工作负荷是包含持续时间信息的跟踪文件,则 dta 将按持续时间的降序优化事件。此参数可用于比较物理设计结构的两个配置。若要比较两个配置,请为这两个配置指定相同的要优化的事件数,再为这两个配置指定不受限制的优化时间。如下所示:dta -n number_of_events -A 0
在此示例中,必须指定不受限制的优化时间 (-A 0)。否则,数据库引擎优化顾问将采用默认的 8 小时优化时间。
-ofoutput_script_file_name
指定 dta 使用 Transact-SQL 脚本将建议写入指定的文件名和目标。可以与此选项一起使用 -F。请确保文件名是唯一的,尤其在使用了 -or 和 -ox 时更应注意。
-oroutput_xml_report_file_name
指定 dta 使用 XML 将建议写入输出报告。如果提供了文件名,建议就会被写入该文件名。否则,dta 将使用会话名生成文件名,并将该文件名写入当前目录。
可以与此选项一起使用 **-F**。请确保文件名是唯一的,尤其在使用了 **-of** 和 **-ox** 时更应注意。
-oxoutput_XML_file_name
指定 dta 使用 XML 文件将建议写入指定的文件名和目标。请确保数据库引擎优化顾问有写入目标目录的权限。可以与此选项一起使用 -F。请确保文件名是唯一的,尤其在使用了 -of 和 -or 时更应注意。
-Ppassword
指定登录 ID 的密码。如果不使用此选项,则 dta 将提示输入密码。-q
设置静默模式。不向控制台写入信息,其中包括进度和标题信息。-rlanalysis_report_list
指定要生成的分析报告列表。下表列出并说明了可为此参数指定的值:值
报告
ALL
所有分析报告
STMT_COST
语句开销报告
EVT_FREQ
事件频率报告
STMT_DET
语句详细报告
CUR_STMT_IDX
语句-索引关系报告(当前配置)
REC_STMT_IDX
语句-索引关系报告(建议配置)
STMT_COSTRANGE
语句开销范围报告
CUR_IDX_USAGE
索引使用报告(当前配置)
REC_IDX_USAGE
索引使用报告(建议配置)
CUR_IDX_DET
索引详细报告(当前配置)
REC_IDX_DET
索引详细报告(建议配置)
VIW_TAB
视图-表关系报告
WKLD_ANL
工作负荷分析报告
DB_ACCESS
数据库访问报告
TAB_ACCESS
表访问报告
COL_ACCESS
列访问报告
指定多个报告时,用逗号分隔各个值。例如:
... -rl EVT_FREQ, VIW_TAB, WKLD_ANL ...
-Sserver_name[ \instance]
指定要连接到的 SQL Server 计算机和实例的名称。如果未指定 server_name,则 dta 将连接到本地计算机的 SQL Server 默认实例。如果连接到命名实例或从网络中的远程计算机执行 dta,则必须使用此选项。-ssession_name
指定优化会话的名称。如果未指定 -ID,则必须使用此选项。-Tftable_list_file
指定包含要优化的一组表的文件名。文件中列出的每个表应另起一行。表名的命名应限定为三个部分,例如,adventureworks.dbo.department。为了调用表的扩展功能,可以选择在现有表名后加上一个数字,指示表中的预定行数。数据库引擎优化顾问在优化或评估引用这些表的工作负荷中的语句时,将考虑这些预定行数。请注意,number_of_rows 计数和 table_name 之间可以有一个或多个空格。以下是 table_list_file 的文件格式:
database_name.[schema_name].table_name [number_of_rows]
database_name.[schema_name].table_name [number_of_rows]
database_name.[schema_name].table_name [number_of_rows]
此参数是在命令提示符中输入表列表的替代方式 (-Tl)。如果使用了 -Tl,请不要使用表列表文件 (-Tf)。如果同时使用这两个参数,dta 将失败并返回错误。
如果省略 -Tf 和 -Tl 参数,则将考虑对指定数据库中的所有用户表进行优化。
-Tltable_list
在命令提示符中指定要优化的一组表。各表名间用逗号分隔。如果只用 -D 参数指定一个数据库,则无需用数据库名限定表名。在其他情况下,使用以下格式的完全限定名:database_name.schema_name.table_name,每个表都必须使用此格式。此参数是使用表列表文件 (-Tf) 的替代方法。如果同时使用 -Tl 和 -Tf,则 dta 将失败并返回错误。
-Ulogin_id
指定用于连接 SQL Server 的登录 ID。-u
启动数据库引擎优化顾问 GUI。所有参数均被视为用户界面的初始设置。-x
启动优化会话,然后退出。
注释
按 Ctrl+C 一次可停止优化会话,并可根据 dta 此时已完成的分析生成建议。系统将提示您确定是否要生成建议。再次按 Ctrl+C 停止优化会话,而不生成建议。
示例
A. 在其建议中优化包含索引和索引视图的工作负荷
此示例使用安全连接 (-E) 连接到 MyServer 中的 tpcd1G 数据库,以分析工作负荷并创建建议。此示例将输出写入到名为 script.sql 的脚本文件。如果 script.sql 已存在,则因为指定了 -F 参数,dta 将覆盖该文件。优化会话的运行时间没有限制,以确保完成工作负荷分析 (-A 0)。建议必须至少提供 5% 的改进 (-m 5)。dta 应在其最终建议中包含索引和索引视图 (-fa IDX_IV)。
dta –S MyServer –E -D tpcd1G -if tpcd_22.sql -F –of script.sql –A 0 -m 5 -fa IDX_IV
B. 限制磁盘使用
此示例将数据库总大小(包括原始数据和其他索引)限定为 3 GB (-B 3000),并将输出定向到 d:\result_dir\script1.sql。该示例的运行时间不会超过 1 小时 (-A 60)。
dta –D tpcd1G –if tpcd_22.sql -B 3000 –of "d:\result_dir\script1.sql" –A 60
C. 限制优化的查询数
此示例将从 orders_wkld.sql 文件读取的最大查询数限定为 10 (-n 10),并将运行时间设为 15 分钟 (-A 15),以先完成的为准。要确保所有 10 个查询都得到优化,请用 -A 0 指定不受限制的优化时间。如果时间紧迫,则通过用 -A 参数指定用于优化的分钟数来指定适当的时间限制,如本例所示。
dta –D orders –if orders_wkld.sql –of script.sql –A 15 -n 10
D. 优化文件中列出的特定表
该示例阐释了 table_list_file(-Tf 参数)的用法。table_list.txt 文件的内容如下所示:
adventureworks.dbo.customer 100000
adventureworks.dbo.store
adventureworks.dbo.product 2000000
table_list.txt 的内容指定:
应当仅优化数据库中的 customer、store 和 product 表。
customer 和 product 表中的行数分别假定为 100,000 和 2,000,000。
store 中的行数假定为表中的当前行数。
请注意,table_list_file 中的行数计数和前面的表名间可以有一个或多个空格。
优化时间为 2 小时 (-A 120),输出将写入 XML 文件 (-ox XMLTune.xml)。
dta –D pubs –if pubs_wkld.sql –ox XMLTune.xml –A 120 –Tf table_list.txt