使用测试服务器的注意事项

使用测试服务器优化生产服务器上的数据库是数据库引擎优化顾问的重要优势。 使用此功能,可以将优化开销卸载到测试服务器,而无需将实际数据从生产服务器复制到测试服务器。

注释

数据库引擎优化顾问图形用户界面(GUI)不支持测试服务器优化功能。

若要成功使用此功能,请查看以下各节中列出的注意事项。

设置测试服务器/生产服务器环境

  • 想要使用测试服务器优化生产服务器上的数据库的用户必须同时存在于这两个服务器上,否则此方案将不起作用。

  • 必须启用扩展存储过程 xp_msver才能使用测试服务器/生产服务器方案。 数据库引擎优化顾问使用此扩展存储过程来提取生产服务器在优化测试服务器时要使用的处理器数和可用内存。 如果未启用 xp_msver ,数据库引擎优化顾问将假定运行数据库引擎优化顾问的计算机的硬件特征。 如果运行数据库引擎优化顾问的计算机的硬件特征不可用,则假定有一个处理器和 1024 兆字节(MB)内存。 安装 SQL Server 时,默认情况下会打开此扩展存储过程。 有关详细信息,请参阅 Surface Area Configurationxp_msver (Transact-SQL)

  • 数据库引擎优化顾问希望 SQL Server 的版本在测试服务器和生产服务器上相同。 如果存在两个不同的版本,则测试服务器上的版本优先。 例如,如果测试服务器正在运行 SQL Server Standard,即使生产服务器正在运行 SQL Server Enterprise,数据库引擎优化顾问也不会在其建议中包含索引视图、分区和联机操作。

关于测试服务器/生产服务器行为

  • 创建建议时,数据库引擎优化顾问将考虑生产服务器与测试服务器之间的硬件差异。 建议相当于好像调优是在生产服务器上单独完成一样。

  • 数据库引擎优化顾问可能会对生产服务器施加一些负载,以便收集元数据以及创建优化所需的统计信息。

  • 数据库引擎优化顾问不会将实际数据从生产服务器复制到测试服务器。 它仅复制数据库的元数据和必要的统计信息。

  • 所有会话信息都存储在生产服务器上的 msdb 中。 这样,就可以利用任何可用的测试服务器进行优化,并且所有会话的相关信息在一个位置(生产服务器)可用。

  • 优化后,数据库引擎优化顾问应删除在优化过程中在测试服务器上创建的任何元数据。 这包括 shell 数据库。 如果要使用相同的生产和测试服务器执行一系列优化会话,可能需要保留此 shell 数据库以节省时间。 在 XML 输入文件中,指定 RetainShellDB 子元素,并将其与 TuningOptions 父元素下的其他子元素一起列出。 使用这些选项会导致数据库引擎优化顾问保留 shell 数据库。 有关详细信息,请参阅 XML 输入文件引用(数据库引擎优化顾问)。

  • 成功测试服务器/生产服务器优化会话后,即使尚未指定 RetainShellDB 子元素,Shell 数据库也可能保留在测试服务器上。 这些不需要的 shell 数据库可能会干扰后续优化会话,应在执行另一个测试服务器/生产服务器优化会话之前删除。 此外,如果优化会话意外退出,则测试服务器上的 shell 数据库和这些数据库中的对象可能保留在测试服务器上。 在启动新的测试服务器/生产服务器优化会话之前,还应删除这些数据库和对象。

  • 用户必须检查优化日志,以确认是否存在因生产服务器与测试服务器之间的差异而引起的优化错误,以及因从生产服务器复制元数据到测试服务器而导致的错误。 例如,测试服务器上可能不存在用户登录名。 如果测试服务器上没有该用户登录名,则由该用户登录名发出的工作负荷中的事件可能无法调节。 使用数据库引擎优化顾问 GUI 查看优化日志。 有关详细信息,请参阅 查看和使用数据库引擎优化顾问的输出

  • 如果数据库引擎优化顾问无法优化许多事件,因为数据库引擎优化顾问在测试服务器上创建的 shell 数据库中缺少对象,则用户必须检查优化日志。 无法调整的事件列在日志中。 若要成功优化测试服务器上的数据库,用户必须在 shell 数据库中创建缺失的对象,然后启动新的优化会话。

  • 如果测试服务器上已存在同名的数据库,数据库引擎优化顾问不会复制元数据,但根据需要继续优化并收集统计信息。 如果用户已在测试服务器上创建了数据库,并在调用数据库引擎优化顾问之前复制了相应的元数据,则这非常有用。

  • 如果为生产服务器上的数据库启用了DATE_CORRELATION_OPTIMIZATION选项,则在优化测试服务器时不会完全编写与此选项关联的元数据和数据。 为测试服务器/生产服务器方案执行优化时,可能会出现以下问题:

    • 对于使用DATE_CORRELATION_OPTIMIZATION选项的查询,用户可以在服务器上使用不同的查询计划。

    • 数据库引擎优化顾问可能会建议删除在建议脚本中启用 DATE_CORRELATION_OPTIMIZATION 选项的索引视图。

    因此,你可能希望忽略数据库引擎优化顾问针对保存相关统计信息的索引视图所做的任何建议,因为数据库引擎优化顾问知道其成本,但不知道其优点。 数据库引擎优化顾问可能不建议选择某些索引,例如 日期/时间 列上的聚集索引,这在启用DATE_CORRELATION_OPTIMIZATION时可能很有用。

    若要确定视图是否基于相关统计信息,请选择 sys.views 目录视图的is_date_correlation_view列。