Cra*_*ein 5 sql-server statistics execution-plan sql-server-2014
我们最近从 SQL Server 2008R2 升级到 SQL Server 2014 SP1 + CU4。
几周后,执行计划出现了无法正确估计行数的问题。问题一度变得如此严重,以至于决定通过再次启用9481跟踪标志和更新统计信息来恢复到旧的基数估计器。当我说“变得如此糟糕”时,我指的是在某些情况下查询的执行时间增加了 10。
使用 traceflag 9481已经解决了问题,但这不是解决方案吗?
搜索谷歌显示,有些人采用旧的基数估计器路线,而其他人则使用2312和4199的组合来使用新的估计器。
那么在从 2008R2 升级到 2014 之后,我们应该采取什么样的跟踪标志(如果有)和其他步骤的组合?
谢谢,克雷格
4 月 26 日上午 9 点更新
4199 跟踪标志不会打开新的基数估算器。我不得不改用 2312 跟踪标志。
使用 4199 跟踪标志时,版本仍为70。Chris Wood 的回答让我想起了Brent Ozar的一篇文章,我在某个时候也读过。仍在等待查看执行时间是否有所改善。
您可以通过更改兼容性级别在每个数据库级别禁用它;假设他们不使用 SQL 2014 特定的语言功能。
但最终我认为您需要确定哪些查询有错误的执行计划以及原因。为此,您可以捕获重播跟踪并开始在带有或不带有跟踪标志/兼容级别的测试台上重播它,并通过计划缓存进行选择(或在重播期间运行 XE 会话以确定查询需要多长时间,然后查看对于差异)。
一旦您了解了敌人,您将能够提出适当的解决方案(不确定 SO 是否是一个好地方,但如果不是,请尝试 SQL Sentry Plan Explorer 论坛,该论坛几乎是为此类分析而设计的)。
但我确实要问,您使用什么来重新计算统计数据,您使用什么选项,以及它运行的频率如何?只是想知道根本问题是否是维护不善(以防万一,但假设不是)。
归档时间: |
|
查看次数: |
781 次 |
最近记录: |