max degree of parallelism说明:http://msdn.microsoft.com/zh-cn/library/ms181007.aspx
当 SQL Server 在具有多个微处理器或 CPU 的计算机上运行时,它将为每个并行计划执行检测最佳并行度(即运行一个语句所使用的处理器数)。您可以使用 max degree of parallelism 选项来限制并行计划执行时所用的处理器数。如果默认值为 0,则使用所有可用的处理器。将 max degree of parallelism 设置为 1 以取消生成并行计划。将该值设置为大于 1 的数字(最大为 64)来限制执行单个查询时所用的最大处理器数。如果指定的值比可用的处理器数大,则使用实际可用数量的处理器。如果计算机只有一个处理器,则将忽略 max degree of parallelism 值。
以下来自微软工程师经验传授:
关于max degree of parallelism这个选项,一般情况下采用默认的0就可以了,这样的话SQL会根据查询的复杂度来决定使用多大并发度的查询。但是在有些OLTP(联机事务处理)系统中,我们会发现SQL中存在大量的并发查询,从而可能从两方面影响SQL性能:
1. 单个查询的并发度过高会导致查询会花大量的时间在等待并发同步上,从而影响查询性能
2. 并发查询太多会占用大量的CPU资源,从而减少其它查询得到CPU时间的机会,这样的话会使其它查询变慢。
一般来说,如果我们看到SQL Server中有大量的CXPACKET等待类型、或者有许多查询长期处于Runnable的状态(表示该查询在等待CPU时间片),我们会建议客户将并发度降下来,以进一步排查问题。