兼容级别从100升级到130,“查询优化器修复”标志

问题描述 投票:2回答:2

我刚刚将数据库从旧的2008 sql服务器迁移到新的2016服务器。我让它在兼容性lvl 100中运行了一段时间,一切都很好。我已经运行了升级顾问,没有标记也在130级设置的测试环境中测试了系统..一切都很好。

我已经完成了生产中的切换,CPU负载略高于标准,不确定这是否会在创建新CE的新计划后随着时间的推移自行纠正。还发现了一个选项“查询优化器修复”什么会启用此标志吗?

sql sql-server sql-server-2016
2个回答
1
投票

简单来说,Microsoft曾经发布修补程序以跟踪标志的形式查询优化器,每个修补程序都有自己的跟踪标志。

比方说,如果你有以下问题

在SQL Server 2005中使用游标执行更新操作时出现错误消息:“事务(进程ID)已锁定资源与另一个进程死锁,并已被选为死锁牺牲品”

微软发布了一个HotFix,在一些跟踪标志4120下。

因此,要应用此修复程序,您必须启用跟踪标记,如下所示

DBCC TRACEON(4120,-1)

想象一下,为所有修补程序启用跟踪标记,这将是cubersome.so Microsoft,来自SQL2005,提出了一个跟踪标志4199,涵盖了所有与Optimizer相关的修复程序

如果他们看到任何与优化器相关的问题,客户可以启用此单一跟踪标记。此实践还屏蔽了其他客户,因为只有看到问题的客户才会应用此跟踪标记。

在SQL 2016中,SQL Server删除了此跟踪标志,并提出了此数据库范围的配置。

启用此选项将帮助您获取最新的查询优化器修复程序,最好的部分是这可以在数据库级别启用,而不是跟踪标志,它始终在服务器级别执行。

Microsoft建议在下面启用此跟踪标志:

建议仅对遇到特定性能问题的客户使用跟踪标志4199,建议客户在将数据库迁移到最新兼容级别后删除跟踪标志4199,因为跟踪标志4199将重复用于将来可能不适用于您的应用程序的修复程序并可能导致生产系统意外的计划性能变化

在这种情况下,Traceflag 4199等同于Query Optimizer Fixes选项

参考文献:https://support.microsoft.com/en-us/help/974006/sql-server-query-optimizer-hotfix-trace-flag-4199-servicing-model


0
投票

TL:DR如果您使用的是SQL Server 2016,并且您的兼容级别设置为SQL Server 2016(130),则可以安全地忽略它。你可以打开或关闭它,没关系。安全的选择是让它离开


我一直在寻找这个问题的答案。有几个帖子有较短版本的the answer by TheGameiswar,没有详细说明。

微软对此的评论相当简短。

在数据库级别启用或禁用“QUERY_OPTIMIZER_HOTFIXES”,以利用最新的查询优化器修补程序,而不管数据库的兼容级别如何。这相当于Trace Flag 4199 Source

我发现的最清晰的答案是Dave Pinal在他的职位SQL SERVER – Database Scoped Configurations – Query Optimizer Fixes

在SQL Server 2016之前,无论何时发布任何修补程序或累积更新,查询优化器改进在SQL Server中都不会自动生效。

但是,从SQL Server 2016开始,所有查询优化器现在都基于兼容级别进行了改进。

如果您使用的是SQL Server 2016,并且您的兼容级别设置为SQL Server 2016(130),则可以安全地忽略它。你可以打开或关闭它,没关系。

SQL Server query optimizer hotfix trace flag 4199 servicing model

在SQL Server 2016中,将在数据库COMPATIBILITY_LEVEL 130下启用对先前版本的SQL Server所做的跟踪标志4199修补程序,而不启用跟踪标志4199。

最新的兼容级别已启用跟踪标志4199下的所有先前修复。这意味着将数据库升级到最新兼容级别并删除跟踪标志4199仍然启用所有修复

最后一点,跟踪标志4199页面上的以下句子表明新的热修复可能需要4199或“查询优化器修复”= ON才能生效。在SQL 2017中测试新的数据库构建(CU13){compatibility 140}默认情况下会将值设置为OFF。

跟踪标志4199将用于通过使用130兼容级别发布数据库的任何未来SQL Server 2016修补程序。

© www.soinside.com 2019 - 2024. All rights reserved.