KB974006-SQL Server 查询优化程序修复程序模型4199服务模型

简介

晚于 SQL Server 2000 Service Pack 3 (SP3)的 Microsoft SQL Server 版本在处于非默认状态的查询优化器中向查询优化器发送大多数修补程序,以防止现有生产客户看到可能导致性能退化的预期计划更改。 首先,每个修补程序都在单独的跟踪标记下提供。 稍后,此练习已更改,以便大多数标志合并到单个跟踪标记(4199)下。 这一新做法是在多个版本中启动的,从以下更新开始:

  • SQL Server 2005 Service Pack 3 (SP3)累积更新6

  • SQL Server 2008 Service Pack 1 (SP1)累积更新包7

  • SQL Server 2008 R2 (RTM)

跟踪标记4199用于收集在未来版本中打算默认为默认的修补程序,而其他跟踪标志用于在当前表单中不打算默认为默认情况下的问题。 从 SQL Server 2016 RTM 开始,将使用 "数据库 COMPATIBILITY_LEVEL" 设置默认启用跟踪标记4199相关的修补程序。 本文介绍如何为 SQL Server 2016 和更高版本提供计划影响的修补程序的结构和策略。

更多信息

在 SQL Server 2016 中,在未启用 "跟踪标记 4199" 的 "数据库 COMPATIBILITY_LEVEL 130" 下,将启用对早期版本的 SQL Server 所做的跟踪标记4199修补程序。 跟踪标志4199将用于使用130兼容级别发布针对数据库的任何未来 SQL Server 2016 修补程序。 由于仅针对查看特定性能问题的客户推荐跟踪标记4199,因此建议在将其迁移到最新兼容级别后删除跟踪标记4199,因为跟踪标记4199将重复用于将来的修补程序,这可能不适用于你的应用程序,并且可能会导致生产系统中出现意外的计划性能更改。 这意味着为给定产品发布中受支持的每个兼容性级别启用了不同的跟踪标记4199修补程序。 T他的最新兼容级别已启用跟踪标记4199下的所有以前的修复。这意味着将数据库升级到最新兼容级别并删除跟踪标记4199仍然支持在数据库升级之前利用工作负荷的所有修复,而不是新的修补程序。如果以后客户遇到查询性能问题,请尝试启用数据库范围的选项 QUERY_OPTIMIZER_HOTFIXES 或测试环境中的查询提示ENABLE_QUERY_OPTIMIZER_HOTFIXES ,以确定问题是否已解决。请参阅有关 QUERY_OPTIMIZER_HOTFIXES的文档。

注意 默认情况下,在 SQL Server 2016 中创建的数据库使用兼容级别130,并且已启用新的优化程序逻辑。 此模型的主要优势是在升级过程中减少生产系统的风险。 此方法将新的 SQL Server 主要版本的安装与所有新查询处理器更改的自动启用分开。 由于主要版本升级会更改文件格式,并且不可逆,因此最好使用 COMPATIBILITY_LEVEL 设置,因为这使客户能够在升级期间发现意外的计划性能问题时快速降级。 如果客户发现意外的计划更改阻止了应用程序升级,则客户可以通过使用查询存储强制执行预先计划来应用合适的计划提示,或者通过联系 Microsoft 客户支持来帮助解决问题来提供解决方法或修补程序,从而缓解此情况。 当所有问题都缓解时,升级可以继续。 客户应将此功能集成到 SQL Server 2016 的升级规划中。 下表介绍了从 SQL Server 2016 开始运行跟踪标记4199的模型。

设置

SQL 兼容性级别

跟踪标记4199

SQL Server 2016 RTM 之前的优化程序修复程序

SQL Server 2016 RTM 之后的优化程序修复程序

raid-1.

120

之外

禁用

禁用

ppls-2.

120

关于

已启用

禁用

三维空间.

130

之外

由兼容级别启用

禁用

4.

130

关于

由兼容级别启用

由兼容级别启用

注意 对于新升级到 SQL Server 2016 的客户,建议设置 no. 3。 对于 SQL Server 2016 之后的主要版本,Microsoft 计划继续对优化程序修复程序使用此服务模型。 默认情况下,或每个版本,将在下一个兼容级别启用以前版本中的任何跟踪标记4199修补程序。 这意味着客户迁移到最新兼容级别后的推荐状态将为 "已禁用跟踪标记 4199"。 更高版本的修补程序将使用跟踪标记4199为必须在应用程序中启用这些特定修复程序的客户启用修补程序。 建议客户在应用程序升级到最新兼容级别后禁用跟踪标记4199,以避免意外在应用程序上启用意外的未来优化程序更改。 升级到最新兼容性级别和删除跟踪标记4199仍支持在升级之前利用工作负荷的所有修补程序,而不是新的修补程序。

注意 尽管在跟踪标记4199下启用了许多优化程序修复程序,但有些会使用其他跟踪标记。 在将来的版本中,跟踪标记4199过去被覆盖的跟踪标志,默认情况下适用且可能会在默认情况下处于启用状态。 替代跟踪标志用于以下修补程序,其中的条件仅特定于少数客户,在这种情况下,修复可能导致其他类型的应用程序中的性能退化,或者内部功能在准备好为所有人启用之前可能会看到更改。 Microsoft 将根据需要继续使用其他跟踪标志来为产品服务。 注意 本文重点介绍了在最新产品的最新兼容级别上释放跟踪标记4199修补程序的模型。 (在发布时,这是 SQL Server 2016。) 优化程序修复程序可能会在较旧的 SQL Server 版本或较低兼容级别(120或更高版本)的 SQL Server 2016 中发布。 Microsoft 将评估每种情况,并确定是使用跟踪标记4199还是其他跟踪标记。 由于在向更高兼容级别进行移动时也会启用非修补程序更改,因此在升级期间不会发生任何计划更改(带或不带跟踪标记4199)的特定承诺。 客户应始终针对生产应用程序仔细测试兼容性级别的更改,如果存在计划选项相关的性能问题,应使用缓解技术(如查询存储)。 对于参考,下表列出了在引入跟踪标记4199之前用于查询处理器修补程序的跟踪标志。

Microsoft 知识库文章

跟踪标志

318530

4101

940128

4102

919905

4103

920346

4104

920347

4105

922438

4106

923849

4107

926024

4108

926773

4109

933724

4110

934065

4111

946793

4115

950880

4116

948445

4117

942659

4119

953948

4120

942444

4121

946020

4122

948248

4124

949854

4125

959013

4126

953569

4127

955694 957872

4128

958547

4129

956686

4131

958006

4133

960770

4135*

SQL Server 2005

此问题的修补程序首次发布于 SQL Server 2005 的累积更新6(Service Pack 3)。有关此累积更新包的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

974648 SQL Server 2005 的累积更新包 6 Service Pack 3注意 由于这些版本是累积的,因此每个新的修复版本都包含以前的 SQL Server 2005 修复版本附带的所有修补程序和所有安全修补程序。 我们建议你考虑应用包含此修补程序的最新修复版本。 有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

960598 发布 SQL server 2005 Service Pack 3 后发布的 SQL Server 2005 版本为特定 SQL Server service pack 创建 Microsoft SQL Server 2005 修补程序。 必须将 SQL Server 2005 Service Pack 3 修补程序应用到 SQL Server 2005 Service Pack 3 的安装。 默认情况下,SQL Server service pack 中提供的任何修补程序都包含在下一个 SQL Server service pack 中。

SQL Server 2008

此问题的修补程序首次在累积更新7中发布。有关如何为 SQL Server 2008 获取此累积更新包的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

973601 SQL Server 2008 累积更新包7注意 由于这些版本是累积的,因此每个新的修复版本都包含以前的 SQL Server 2008 修复版本附带的所有修补程序和所有安全修补程序。 我们建议你考虑应用包含此修补程序的最新修复版本。 有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

956909 在 SQL Server 2008 发布后发布的 SQL Server 2008 版本

SQL Server 2008 SP1

此问题的修补程序首次发布于 SQL Server 2008 Service Pack 1 的累积更新7。有关此累积更新包的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

979065 SQL Server 2008 的累积更新包 7 Service Pack 1注意 由于这些版本是累积的,因此每个新的修复版本都包含以前的 SQL Server 2008 修复版本附带的所有修补程序和所有安全修补程序。 我们建议你考虑应用包含此修补程序的最新修复版本。 有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

970365 在发布 SQL Server 2008 Service Pack 1 之后发布的 SQL Server 2008 版本为特定 SQL Server service pack 创建 Microsoft SQL Server 2008 修补程序。 必须将 SQL Server 2008 Service Pack 1 修补程序应用到 SQL Server 2008 Service Pack 1 的安装。 默认情况下,SQL Server service pack 中提供的任何修补程序都包含在下一个 SQL Server service pack 中。

SQL Server 2008 R2

在 SQL Server 2008 R2 的发布版本中,从可由-T4199 控制的跟踪标记列表中意外省略了跟踪标记4135。 但是,在 SQL Server 2008 R2 的累积更新1中已修复此情况。 因此,对于此内部版本以及 SQL Server 2005 和 SQL Server 2008 支持的版本,-T4199 将足够启用此和本文中列出的其他跟踪标记。

SQL Server 2012 和更高版本

SQL Server 2012 和更高版本的发布版本中包含了跟踪标记4199。

如何启用跟踪标记4199

你可以在启动时或在用户会话中启用跟踪标记4199。 此跟踪标志具有全局级别或会话级别效果。 若要启用跟踪标记4199,请使用 DBCC TRACEON 命令或将 – T 4199 用作启动参数。如果使用 DBCC TRACEON\TRACEOFF ,则不会为存储过程重新生成新的缓存计划。 计划可能位于没有跟踪标记的情况下创建的缓存中。有关如何启用或禁用跟踪标记以及全局和会话级跟踪标记说明的详细信息,请参阅 SQL Server 联机丛书中的以下主题:

参考

有关 SQL Server 更新的命名架构的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

822499 Microsoft SQL Server 软件更新程序包的新命名架构 有关软件更新术语的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

824684 有关用于描述 Microsoft 软件更新标准术语的说明

需要更多帮助?

扩展你的技能
了解培训
抢先获得新功能
加入 Microsoft 内部人员

此信息是否有帮助?

谢谢您的反馈意见!

谢谢你的反馈! 可能需要转接到 Office 支持专员。

×