上周,我们在2012 Enterprise SQL服务器上将兼容性模式从100(2008)更改为110(2012)。
从那时起,我们发现存储过程的性能从18分钟降低到48小时(在我们杀死它之前)。
我将兼容模式更改回100,并且sproc在18分钟后再次运行。从前后比较计划来看,110版本在每一步都有并行性,100版本则没有任何并行性。其他存储过程(大约50个)已经以正常速度运行。
这对我来说是一个全新的领域,为什么将兼容模式从100更改为110会导致仅一个存储过程的并行度大大提高?
答案 0 :(得分:0)
更改为更高的兼容性级别可帮助sql引擎根据最新改进选择计划。因此,更改兼容性级别不是查询缓慢的主要原因。您应该使用查询提示 OPTION(MAXDOP n)查找RCA。
在更改兼容性级别之前和之后检查查询计划。更改兼容性级别后,使用查询提示检查它在MAXDOP 1上的计划,然后使用MAXDOP n检查该计划,其中n> 1(取决于服务器硬件)。
并且不要忘记分析兼容性级别已更改的查询计划。