首页 > 解决方案 > SQL Server 2012 - 为什么更改兼容模式会影响查询中的并行性?

问题描述

上周,我们在 2012 Enterprise SQL Server 上将兼容模式从 100 (2008) 更改为 110 (2012)。

从那时起,我们发现存储过程的性能从 18 分钟下降到 48 小时(在我们杀死它之前)。

我将兼容模式改回 100,sproc 再次在 18 分钟内运行。对比之前和之后的计划,110版本的每一步都有并行性,100版本什么都没有。其他存储过程(约 50 个)一直以正常速度运行。

这对我来说是一个全新的领域,为什么将兼容模式从 100 更改为 110 会导致仅一个存储过程的并行度大幅增加?

标签: sql-server-2012database-performance

解决方案


更改为更高的兼容性级别有助于 sql 引擎根据最新改进选择计划。因此,更改兼容性级别并不是查询缓慢的主要原因。您应该使用查询提示OPTION(MAXDOP n)来查找 RCA。

在更改兼容级别之前和之后检查查询计划。更改兼容性级别后,使用查询提示检查它在 MAXDOP 1 上的计划,然后使用 MAXDOP n 检查计划,其中 n > 1(取决于服务器硬件)。

并且不要忘记分析具有更改的兼容性级别的查询计划。


推荐阅读