2.7DatabaseEngineTuningAdvisor数据库引擎优化顾问
来源:优易学  2011-12-4 20:35:49   【优易学:中国教育考试门户网】   资料下载   IT书店

2.7 Database Engine Tuning Advisor数据库引擎优化顾问

SQL Server 2005 将之前版本的索引向导(Index Tuning Wizard)单独扩增成一个应用程序,称为“Database Engine Tuning Advisor”。协助用户在尚未深入了解数据库结构、索引、数据分布统计、索引视图(Indexed View)和数据分区的运行原理之前,就能够有效地创建这些对象以提升系统性能,而不至于误用导致性能更差。

“Database Engine Tuning Advisor”会针对一个以上数据库的运行情况分析其工作负荷。工作负荷指的是针对一或多个数据库执行的多句 T-SQL 语法。当优化数据库时,“Database Engine Tuning Advisor”会利用存在硬盘上的跟踪文件,或存在 SQL Server 数据库内的跟踪数据表,抑或是 T-SQL 脚本[1]来作为工作负荷的输入。你可以利用 Management Studio 中的查询编辑器来创建 T-SQL 脚本工作负荷,或是用 Profiler 工具程序,在“使用模板”选项选择“Tuning”,以录制存放在跟踪文件或跟踪数据表的工作负荷。

若应用程序需要使用多个数据库以完成工作,则我们直接编写的 T-SQL 访问语法,或通过 SQL Trace 机制以及 Profiler 工具程序录制的工作负荷内容,经常一句语法访问多个数据库内的对象。“Database Engine Tuning Advisor”能同时优化多个数据库,这就比以往版本的“索引向导”有用多了。遇到多数据库对象,以往的“索引向导”就放弃优化L。现今用户可以在 “Database Engine Tuning Advisor”指定要优化的数据库集合,便能对所有使用到且被选取的数据库提出结构上的建议。

另一个与前版不同的是:“Database Engine Tuning Advisor”提供了“限制优化时间”选项,要求它在期限前交出报告。避免你急着要结果,但它却一直跑个不停,或在某个时间点一定要退出,不然会干扰在线系统的执行。当然,若分析的数据库结构和查询负荷复杂,则时间充裕才可能提供较精确的分析。

通过“开始”菜单上的“程序”-“Microsoft SQL Server 2005”-“性能工具”-“Database Engine Tuning Advisor(数据库引擎优化顾问)”选项,或是在 Management Studio、Profiler 等程序环境内,都可以通过主菜单打开“Database Engine Tuning Advisor”工具程序,其执行界面如图2-20所示:
------------------------------------------------------------------------------------------------------------------------------------------------------------
[1] 若要直接分析某些 T-SQL 脚本,可通过 Management Studio 查询编辑器输入查询语法,并选取想要分析的部分。接着以鼠标右键点选所用的查询,并选择快捷选单中的“在 Database Engine Tuning Advisor 中分析查询”选项。此时 Management Studio 会将“Database Engine Tuning Advisor”打开,并赋予反白的语法。此时你会在如图2-20 的“常规”页签上方“工作负荷”部分看到多一个“查询”选项,默认已经设置好且不能改变(此处笔者是直接指定负荷文件,所以并没有该选项)。
------------------------------------------------------------------------------------------------------------------------------------------------------------


图2-20 通过“常规”和“优化选项”页签设置会话的内容

打开“Database Engine Tuning Advisor”后,首先可以通过主菜单“文件”-“新建会话”菜单建立会话(session),并在图2-20左上方“会话监视器”窗口中,通过鼠标右键点选某个会话,以快捷菜单的“重新命名会话”菜单,或是在“常规”页签的“会话名称”给予一个有意义的名字。

会话是进行分析的管理单位,内容包含创建数据库连接的信息、“工作负荷”的来源、需要优化的数据库与数据表、优化的选项设置以及分析的结果等等,在图形界面中可以查看目前与以往优化会话的结果。而主菜单“文件”内的子选项可以让你管理这些历来的会话。

接着是定义工作负荷,默认可以指定“文件”或“数据表”两种方式,其中文件可以指定 .sql.xml.trc 三种格式的文件。.sql 文件内放置一般的 T-SQL 语法,其他两种格式则是 Profiler 所录制的工作负荷。而“数据表”则是指定 Profiler 存放跟踪结果的数据表。

“Database Engine Tuning Advisor”会利用查询最佳化工具来分析工作负荷中的语法,以建议增加、删除或修改数据库中的实例对象结构。内容包括聚集索引、非聚集索引的最佳设计方式、对齐或非对齐[1]的数据分区、可用的索引视图以及需要增加的数据分布统计等。

并提供包括索引用法、数据库、数据表与字段之间的语法使用百分比以及工作负荷中的查询性能,套用变更后性能改善的比例等许多报表。

“Database Engine Tuning Advisor”执行完毕后显示的建议与报表如图2-21及2-22所示:
-------------------------------------------------------------------------------------------------------------------------------------------------------
[1] 虽然定义索引分区时,可以与其下数据表的分区定义不同。不过,通常是先设计数据表分区之后,再对数据表建立索引,这时 SQL Server 会使用与数据表相同的“数据分区方案”和“分区数据列”分区索引。因此,索引和数据表的的分区定义相同,这称为“对齐”。

个别为索引指定不同的数据分区方案,或在建立索引时指定不同的文件夹来存放,则 SQL Server 不会将索引与数据表的分区对齐。若基底数据表并未做数据分区,但想直接对索引数据进行分区,或索引键是唯一且不含数据表定义的分区数据列,则会单独建立索引的分区定义,此称为非对齐。

如果需要增加额外的数据分区来扩充索引存放空间,或者索引会经常地做数据分区切换,则索引与数据表两者的分区需要对齐。
-------------------------------------------------------------------------------------------------------------------------------------------------------



图2-21 分析完毕后,提供建置与删除数据分区、索引、统计以及索引视图的建议

当分析完毕后,通过查看如图2-21的“建议”页签,你可以在每一个建议选项前勾选想要立刻执行或存储的建议,而后通过主菜单“操作”-“套用建议”或“存储建议”选项来立即对连接的实例执行修改结构的 T-SQL DDL,或是将这些 DDL 语法存放在硬盘文件上。切换到如图2-22的“报表”标记后,可以在上方窗口内看到整个分析过程的摘要信息以及在下方窗口可以选择不同的报表,查看分析细节。


图2-22 分析完毕后所提供的建议报表

“Database Engine Tuning Advisor”工作过程的元数据与建议都可以输出保存。其中,会话的定义可以保存供以后重新打开使用,或是通过命令行工具程序 dta.exe 以批处理的方式来执行分析。例如上述的定义通过主菜单“文件”-“导出会话定义”菜单,将分析设置保存为 dta AdvWkdw. xml,则通过 dta 的执行命令可约略如下:

C:\>dta —S .\yukon —E —s mySession2 —ix dta_AdvWkdw.xml —ox MyXMLOutput2.xml

在上述范例中,执行 dta 工具程序时,菜单的指定方式大小写有别。在此以 —S 菜单设置要连接的实例,—E 选项设置以集成验证的方式,也就是以当前执行程序的 Windows 账号登录,以 —s 选项设置会话的名称,以 —ix 选项设置上述保存的设置文件,以 —ox 设置存放输出结果的文件。

整个 dta 的功能与设置相当复杂,你可以参照在线帮助“工具与公共程序参考”——“命令提示符公共程序”——“dta 公共程序”节点。

责任编辑:小草

文章搜索:
 相关文章
热点资讯
热门课程培训