• dta”命令行工具


    本系列文章关注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参数,然后运行分析。

  • 相关阅读:
    C# 操作Excel
    分享C#原生ID(流水号)生成功能实现
    Win7 64bit系统下未能加载文件或程序集“System.Data.SQLite”的解决办法
    c# 软件自动在线更新代码
    Win7 64bit系统下未能加载文件或程序集“System.Data.SQLite”的另一解决办法
    ActiveX控件的另类免费签名法(补充)
    ActiveX控件的另类免费签名法
    常用函数以及正则校验
    Delphi键盘按键伪码
    格林治时间
  • 原文地址:https://www.cnblogs.com/Amaranthus/p/1989083.html
Copyright © 2020-2023  润新知