使用数据库引擎优化顾问的注意事项

使用数据库引擎优化顾问以前,应先了解其功能和性能影响。以下各节说明了这些注意事项,但并未列出所有问题。您特定的 SQL Server 环境和实现将决定您在使用数据库引擎优化顾问时具体必须考虑哪些问题。

数据库引擎优化顾问的功能

数据库引擎优化顾问不能执行下列操作:

  • 建议对系统表建立索引。

  • 添加或删除唯一索引或强制 PRIMARY KEY 或 UNIQUE 约束的索引。

  • 优化单用户数据库。

注意注意

当建议中包含索引视图时,数据库引擎优化顾问将建议在视图上使用唯一聚集索引。

另外,数据库引擎优化顾问具有下列限制:

  • 数据库引擎优化顾问通过数据采样收集统计信息。因此,在相同的工作负荷上重复运行该工具可能生成不同的结果。

  • 数据库引擎优化顾问不能用于优化 Microsoft SQL Server 7.0 或更早版本的数据库中的索引。

  • 如果为优化建议指定的最大磁盘空间超过了可用空间,数据库引擎优化顾问将使用指定的值。但是,当您执行建议脚本来实施它时,如果未先添加更多磁盘空间,则脚本会失败。可以使用 dta 实用工具的 -B 选项指定最大磁盘空间,也可以通过在**“高级优化选项”**对话框中输入值来指定最大磁盘空间。

  • 为了安全起见,数据库引擎优化顾问不能优化驻留在远程服务器上的跟踪表中的工作负荷。若要解除此限制,可以选择以下选项之一:

    • 使用跟踪文件而不使用跟踪表。

    • 将跟踪表复制到远程服务器。

  • 当强制实施约束时,例如为优化建议指定最大磁盘空间时强制的约束(通过使用 -B 选项或**“高级优化选项”**对话框),数据库引擎优化顾问可能会被迫删除某些现有的索引。在此情况下,生成的数据库引擎优化顾问建议可能生成负的预期提高值。

  • 指定限制优化时间的约束时(通过使用 dta 实用工具的 -A 选项或通过选择**“优化选项”选项卡上的“限制优化时间”**),数据库引擎优化顾问可能超过该时间限制,以便针对到当时为止已处理的工作负荷,生成精确预期的提高值和分析报告。

数据库引擎优化顾问可能在下列情况下不提供建议:

  • 正在优化的表所包含的数据页数少于 10。

  • 建议的索引对当前物理数据库设计的查询性能预计带来的提高值不够。

  • 运行数据库引擎优化顾问的用户不是 db_owner 数据库角色或 sysadmin 固定服务器角色的成员。工作负荷中的查询在运行数据库引擎优化顾问的用户的安全上下文中进行分析。该用户必须是 db_owner 数据库角色的成员。

数据库引擎优化顾问可能在下列情况下不提供分区建议:

  • 未启用 xp_msver 扩展存储过程。此扩展存储过程用于提取要优化的数据库所在服务器上的处理器数目以及可用内存。请注意,安装 SQL Server 后,默认情况下,此扩展存储过程处于打开状态。有关详细信息,请参阅了解外围应用配置器xp_msver (Transact-SQL)
注意注意

数据库引擎优化顾问优化测试服务器时,必须启用 xp_msver 扩展存储过程,这样数据库引擎优化顾问可以在优化期间从生产服务器中提取信息。有关详细信息,请参阅使用测试服务器的注意事项

性能注意事项

在分析过程中,数据库引擎优化顾问可能占用相当多的处理器及内存资源。若要避免降低生产服务器速度,请采用下列策略之一:

  • 在服务器空闲时优化数据库。数据库引擎优化顾问可能影响维护任务性能。

  • 使用测试服务器/生产服务器功能。有关详细信息,请参阅减轻生产服务器优化负荷

  • 指定数据库引擎优化顾问仅分析物理数据库设计结构。数据库引擎优化顾问提供许多选项,但是请仅指定所需选项。

数据库引擎优化顾问将会话信息存储在 msdb 数据库中

数据库引擎优化顾问将优化会话数据和其他信息存储在 msdb 数据库中。如果对 msdb 数据库进行了更改,可能会有丢失优化会话数据的风险。若要消除此风险,请对 msdb 数据库实施适当的备份策略。