下面是截图:

  分析:

  SQL Server 有很的算法体系去决定是否并行运行查询。改写SQL Server的决定需要经验和专业知识。至于使用多少个CPU,这个比较确定的方法是——试验。

  在步骤1中,使用SP_Configure存储过程来把大并行度设为0,也是默认值,这个值代表这SQL Server是否生成并行执行计划,如果是,可以使用多少个CPU。如果你设置为4,SQLServer将使用4个核心来处理查询,如果设为1,不会发生并行度。

  在步骤2中,使用OPTION来对特定查询设置并行查询。这里有两个SELECT语句同时执行。第一个查询使用了MAXDOP =1,意味着不使用并行度执行查询,而第二个查询使用了MAXDOP =0,意味着由SQLServer自己决定是否使用并行度运行。

  在加了SET STATISTICS TIME之后,可以看到每个查询总共消耗了多少CPU时间。

  扩充知识:

  在生产环境中更改默认的大并行度将会非常危险。所以尽可能保持现状,如果你想修改,需要和你的上司或者同事商讨。经验表明,SQL Server并不总是为了单一查询而使用所有CPU。除此之外,在OLTP系统中,不建议调整这个设置,但是在OLAP系统中,这却是可以考虑的。

  另外,如果你有16个核心,并把MaxDegree of Parallelism设为8,并不以为这只有8个核心会用在SQL Server上,仅仅代表单一查询不会使用超过8个核心而已,即使在并行运行,也如此。但是SQL Server依然会使用所有可用的核心。