查询计划更改SQL Server 2014中的性能更差


10

我们最近将服务器从SQL Server 2008R2升级到SQL Server2014。我们在2008R2中运行良好,但现在在2014年运行速度慢得令人难以置信,执行计划也很差。

我已经做了几次测试...

  1. 将2014 DB切换回2008/2012兼容模式。
  2. 使用分页测试查询。

两者都导致查询运行与SQL Server 2008R2相同,并且运行速度很快。

为什么计划如此糟糕,并且查询在SQL Server 2014中运行了这么长时间?

估计/实际

此图显示了2个查询,一个查询使用它在2008R2中运行的行号,然后第二个是分页修复。两者都在2014年运行,但都非常不同,但是在2008年,我们看到的效果与2014年使用分页时相同。

Answers:


7

这不是问题,这是设计使然,可以认为是性能的提高。

如果查询未按预期运行,则需要在数据库/应用程序的代码中解决此问题。

您可以通过在服务器,会话或查询级别(使用OPTION (QUERYTRACEON 9481))使用跟踪标志9481来强制使用旧的死亡率估算器。无论数据库的兼容级别如何,都将强制这样做。

CSS团队在此处还发布了大量信息。

有关Cardanility Estimator的更详细信息,以及有关 SQL Server 2014中该过程的更改,包括示例。


听起来像是糟糕的借口,
指出
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.