SQL Server调优:“dta”命令行工具

日期: 2011-01-03 作者:Ray RankinsPaul T. BertucciChris GallelliAlex T. Silverstein翻译:冯昀晖 来源:TechTarget中国 英文

本系列文章关注SQL Server数据库调优命令行工具,比如:“dta”命令行工具。我们会关注它的用法以及它对应的图形化工具,我们会基于给定负载进行分析并提供一些建议。另外我们还将了解到“tablediff”命令行工具,它支持你比较两个表的内容。   “dta”命令行工具   “dta”是图形化数据库引擎调优顾问的命令行版本。

命令行工具和图形化工具都基于它们面对的负载提供性能优化建议。“dta”的语法如下:   Dta [ -? ] |   [   [ -S server_name[ instance ] ……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

本系列文章关注SQL Server数据库调优命令行工具,比如:“dta”命令行工具。我们会关注它的用法以及它对应的图形化工具,我们会基于给定负载进行分析并提供一些建议。另外我们还将了解到“tablediff”命令行工具,它支持你比较两个表的内容。

  “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参数,然后运行分析。

相关推荐

  • 干货:MySQL数据库优化参考

    本文整理了一些MySQL的通用优化方法,做个简单的总结分享,旨在帮助那些没有专职MySQL DBA的企业做好基本的优化工作。

  • 基于硬件的PostgreSQL数据库性能调优

    数据库性能优化有两个方面:提高数据库对电脑CPU、内存和硬盘的使用;最优化传递到数据库的查询。这篇文章讨论的是在硬件方面优化数据库性能。

  • 优化T-SQL提升SQL Server数据库性能

    本文中提供了八种优化T-SQL代码避免SQL Server数据库性能瓶颈的技巧,我们可以据此优化数据库应用。

  • HBase数据库性能调优

    对于一些Online应用,RegionServer从宕机到恢复时间本身就很短的(网络闪断,crash等故障,运维可快速介入),如果调低timeout时间,反而会得不偿失。