1 数据库引擎优化顾问概述
借助 Microsoft SQL Server 数据库引擎优化顾问,您不必精通数据库结构或深谙 Microsoft SQL Server,即可选择和创建索引、索引视图和分区的最佳集合。
数据库引擎优化顾问分析一个或多个数据库的工作负荷和物理实现。工作负荷是对要优化的一个或多个数据库执行的一组 Transact-SQL 语句。在优化数据库时,数据库引擎优化顾问将使用跟踪文件、跟踪表或 Transact-SQL 脚本作为工作负荷输入。可以在 SQL Server Management Studio 中使用查询编辑器创建 Transact-SQL 脚本工作负荷。可以通过使用 SQL Server Profiler 中的优化模板来创建跟踪文件和跟踪表工作负荷。有关使用 SQL Server Profiler 创建可用作工作负荷的跟踪的信息,请参阅SQL Server Profiler 简介。
对工作负荷进行分析后,数据库引擎优化顾问会建议您添加、删除、或修改数据库中的物理设计结构。此顾问还可针对应收集哪些统计信息来备份物理设计结构提出建议。物理设计结构包括聚集索引、非聚集索引、索引视图和分区。数据库引擎优化顾问会推荐一组物理设计结构,以降低工作负荷的开销(由查询优化器估计)。
数据库引擎优化顾问的优化功能
数据库引擎优化顾问具备下列功能:
* 通过使用查询优化器分析工作负荷中的查询,推荐数据库的最佳索引组合。
* 为工作负荷中引用的数据库推荐对齐分区或非对齐分区。
* 推荐工作负荷中引用的数据库的索引视图。
* 分析所建议的更改将会产生的影响,包括索引的使用,查询在表之间的分布,以及查询在工作负荷中的性能。
* 推荐为执行一个小型的问题查询集而对数据库进行优化的方法。
* 允许通过指定磁盘空间约束等高级选项对推荐进行自定义。
* 提供对所给工作负荷的建议执行效果的汇总报告。
* 考虑备选方案,即:您以假定配置的形式提供可能的设计结构方案,供数据库引擎优化顾问进行评估。
2 数据库引擎优化顾问功能
据库引擎优化顾问提供了一些新功能。通过这些新功能,无论是初学者还是有经验的数据库管理员都能对数据库进行优化,以获得更好的查询性能。以下各部分列出了数据库引擎优化顾问的新功能,并进行了说明:
工作负荷分析功能得到改进
* 处理引用瞬态表(如临时表)的批。
* 不会因为它不能分析某事件而终止优化,而是将该事件记录到优化日志中,再继续优化其他事件。
* 分析和优化引用用户定义函数的查询。
* 处理跟踪中的所有 USE 语句,这些语句在优化多个数据库时必不可少。
* 使用工作负荷中的 LoginName 列(如果跟踪工作负荷过程中有此列),以便在执行事件的用户的环境中正确优化该事件。
* 优化触发器中的语句。
可伸缩性增强
* 使用工作负荷压缩,让数据库引擎优化顾问既可缩短优化所需的时间,又能生成高质量的优化建议结果。
* 使用算法以避免生成重复的统计信息,从而减少优化期间发生的 I/O 数量。
优化集成
数据库引擎优化顾问可以权衡包括筛选索引在内的各种不同类型的物理设计结构(如索引、索引视图、分区)所提供的性能。不同结构可以在功能上有所重叠,以减少执行任何给定查询时的开销,从而可以考虑对多个设计结构进行集成配置,使数据库引擎优化顾问能够提供质量更高的建议。例如,如果仅考虑对一组表的聚集索引,再考虑对同一组表的水平范围分区,这并不能提供这两种物理结构配合使用时的工作情况。若要了解这两种结构配合使用的情况,优化工具必须执行集成优化。
优化多个数据库
应用程序经常要访问多个数据库以完成工作,因此,工作负荷会频繁引用多个数据库中的对象。与 Microsoft SQL Server 2000 中的索引优化向导不同,数据库引擎优化顾问可以同时优化多个数据库。用户可以指定一组要优化的数据库,而数据库引擎优化顾问会为所有选定数据库提出建议。有关此功能的详细信息,请参阅优化多个数据库。
将优化开销分摊给测试服务器
优化较大的工作负荷会对所优化的服务器产生很大的开销。这是因为在优化过程中,数据库引擎优化顾问通常需要多次调用查询优化器。除了生产服务器之外,还可以使用测试服务器来消除此问题。
在这种情况下,您将优化一个测试服务器。测试服务器具备与生产服务器相同的环境。收到优化测试服务器而产生的数据库设计配置建议后,可以在维护期间将该建议应用于生产服务器。
使用测试服务器的传统方法,是将生产服务器的所有数据复制到测试服务器,再优化测试服务器,然后针对两台计算机的硬件差异调整产生的建议。数据库引擎优化顾问无需将数据复制到测试计算机,也无需两台计算机的硬件相同,就能利用测试服务器,从而节省了时间和资源。数据库引擎优化顾问只将元数据、统计信息和硬件参数从生产服务器导入测试服务器。然后,数据库引擎优化顾问对测试服务器执行大容量优化操作,而您可以在正常维护时将优化结果应用于生产服务器。有关此功能的详细信息,请参阅减轻生产服务器优化负荷。
命令提示实用工具和图形用户界面工具
数据库引擎优化顾问提供以下两种用户界面:
* dta 命令提示实用工具,可以通过编写脚本轻松组合数据库引擎优化顾问的功能。
* 数据库引擎优化顾问图形用户界面 (GUI) 工具,可以轻松查看优化会话和结果。
仅删除优化
数据库中的物理设计结构会随时间积累,数据库管理员需要一种删除无用结构的方法。使用仅删除优化选项,可以确定那些不再使用,或对给定工作负荷用处甚少的现有物理设计结构。在使用 dta 命令提示实用工具时,可以使用 –fx 参数来指定此优化选项。如果使用的是 GUI,则可以在“优化选项”选项卡中选中“仅评估现有 PDS 的使用率”,以指定此选项。
如果选择此选项,数据库引擎优化顾问将永不建议任何新结构。因此,此选项不能与添加索引、索引视图或分区的其他选项一起使用。仅删除优化选项也不能与保存全部现有结构的选项一起使用。有关可用于数据库引擎优化顾问的优化选项的详细信息,请参阅可用的优化选项。
XML 支持
可以在数据库引擎优化顾问 XML 输入文件中,定义可使用数据库引擎优化顾问 GUI 以及 dta 命令提示实用工具执行的所有优化操作。XML 输入文件使用已发布的数据库引擎优化顾问 XML 架构,该架构可以在 Microsoft SQL Server 安装目录的以下位置中找到:
C:\Program Files\Microsoft SQL Server\100\Tools\Binn\schemas\sqlserver\2004\07\dta\dtaschema.xsd
您还可以从 Microsoft 网站上的数据库引擎优化顾问架构下载该架构。
通过使用 XML 输入文件,您可以在优化数据库时使用常用的 XML 工具,有经验的数据库管理员可以有更大的灵活性。例如,使用 XML 输入文件,您可以指定现有的和假设的物理设计结构(索引、索引视图、分区)的配置,然后,可以按应用了此配置的情况,使用 dta 命令提示实用工具优化数据库。这可以实现假设分析,又不会在优化前产生实施新配置的开销。有关数据库引擎优化顾问 XML 支持的详细信息,请参阅 XML 输入文件引用(数据库引擎优化顾问)、使用 XML 输入文件进行优化和使用数据库引擎优化顾问进行探索性分析。
用户指定的配置和假设分析支持
使用数据库引擎优化顾问,用户可以提供物理设计结构(索引、索引视图和分区策略)的假设配置作为优化输入。然后,可以按已经应用了该配置的情况,优化一个或多个数据库。这样一来,您就可以在发生应用这些结构产生的开销之前,对一组特定物理设计结构组作出假设分析。数据库引擎优化顾问 XML 架构完全支持此功能。可以在 XML 输入文件中指定希望处理的配置,然后使用 dta 命令提示实用工具启动优化会话。有关此功能的详细信息,请参阅使用数据库引擎优化顾问进行探索性分析。
分析报告
优化会话完成后,数据库引擎优化顾问将以文本格式或 XML 格式生成若干分析报告。这些报告提供的信息包括工作负荷中发生的查询开销、工作负荷中事件的发生频率以及查询及其引用的索引之间的关系等。可以使用数据库引擎优化顾问 GUI 查看报告,也可以使用常用的 XML 编辑器打开以 XML 格式生成的报告。有关数据库引擎优化顾问生成的分析报告的详细信息,请参阅选择数据库引擎优化顾问报告。
优化会话
在开始分析前,数据库引擎优化顾问会提示您创建一个唯一的名称或编号,来标识优化会话。完成工作负荷分析或停止分析后,数据库引擎优化顾问将保存优化会话信息,并将其与开始优化前提供的标识符关联起来。您可以使用会话标识符将现有会话重新载入数据库引擎优化顾问 GUI,在此可以查看优化结果和报告。使用优化会话可以轻松比较各个时间段的会话结果。有关使用优化会话的详细信息,请参阅使用会话监视器评估优化建议。
使用 dta 实用工具时才可用的功能
使用数据库引擎优化顾问 GUI 时,以下各部分中列出的优化选项当前不可用。
在命令提示符下或使用 XML 输入文件时
在命令提示符下运行 dta 实用工具时,或通过使用 -ix 命令提示符参数将 XML 输入文件用于该实用工具时,您可以指定:
* 优化日志名称(-e 命令提示符参数,或 TableName 元素)。
* 要优化的事件数(-n 命令提示符参数,或 NumberOfEvents 元素)。
* 由数据库引擎优化顾问推荐的索引中的最大键列数(-c 命令提示符参数,或 MaxKeyColumnsInIndex 元素)。
* 数据库引擎优化顾问对推荐的配置提出的最小改进(-m 命令提示符参数,或 MinPercentageImprovement 元素)。
使用 XML 输入文件时
除了上述功能之外,在将 XML 输入文件与 dta 实用工具一起使用时,还可以:
* 使用测试服务器/生产服务器方案,其中包括在测试服务器上创建 shell 数据库(TestServer 元素)。
* 在 XML 输入文件中指定工作负荷内联(EventString 元素)。
* 忽略工作负荷中的常量(IgnoreConstantsInWorkload 元素)。
在命令提示符下
除了上述功能之外,在命令提示符下运行 dta 实用工具时,还可以:
* 指定静默模式,实用工具在该模式下运行时不显示任何反馈消息(-q 命令提示符参数)。
* 优化并自动应用优化建议(-a 命令提示符参数)。