Tim*_*m J 5 sql-server sql-server-2014 compatibility-level
我们最近将生产数据库的兼容性级别 (CL) 从 100 升级到 120。
几天之内,用户开始抱怨等待时间增加和普遍缓慢。决定将 CL 恢复到 100。虽然情况确实有所好转,但查询时间并没有回到历史平均水平。
然后我们清除了计划缓存以删除任何仍然存在的 120 个查询计划,并在配置工具中重新启动 SQL Server 服务。毕竟,我们的平均时间仍然明显更高,尽管比我们最初切换到 CL 120 时要好得多。
还有什么我可以做的,或者我错过了什么步骤,以恢复到旧的基数估算器?
我认为这没有任何影响,但我们所做的相同更改的一部分是在 CL 升级时启用 CLR,并在尝试恢复时再次禁用它。
我们使用的是 SQL Server 2014 Service Pack 1,还没有 CU。我们的更新时间表有限。CU 6 定于下个月进行。我们每晚更新统计数据并检查要重建的索引。
我还能做些什么,或者我是否错过了一个步骤,以恢复到旧的基数估计器?
在 SQL Server 2014 中,可以通过两种方式恢复到旧 CE
option querytraceon
现在您已经恢复到旧的 CE,故障排除的下一步是使用 XEvents 或服务器端跟踪找出/隔离性能不佳的查询。
您应该调整这些查询。
我的建议:
不要恢复到旧的 CE,而是隔离性能不佳的查询并对其进行调整。如果您无法调整并希望特定查询使用 OLD CE,请用作option (querytraceon 9481)
查询提示。
由于您使用的是 SQL Server 2014 + SP1,因此应该启用跟踪标志 4199。
另请参阅