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

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

注意

数据库引擎优化顾问图形用户界面 (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 输入文件中指定 TuningOptions 父元素下的 RetainShellDB 子元素以及其他子元素。 使用这些选项会导致数据库引擎优化顾问保留 shell 数据库。 有关详细信息,请参阅 XML 输入文件引用 (数据库引擎优化顾问)

  • 在成功完成测试服务器/生产服务器的优化会话后,即使未指定 RetainShellDB 子元素,Shell 数据库也会保留在测试服务器中。 这些无用的 Shell 数据库可能会妨碍后续的会话优化操作,因此,在执行其他测试服务器/生产服务器优化会话之前,应先删除这些 Shell 数据库。 此外,如果优化会话意外结束,则测试服务器中的 Shell 数据库及其内部对象可能会保留在测试服务器中。 在启动新的测试服务器/生产服务器优化会话之前,也应删除这些数据库和对象。

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

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

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

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

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

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

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

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