以下来自微软工程师经验传授:
关于max degree of parallelism这个选项,一般情况下采用默认的0就可以了,这样的话SQL会根据查询的复杂度来决定使用多大并发度的查询。但是在有些OLTP(联机事务处理)系统中,我们会发现SQL中存在大量的并发查询,从而可能从两方面影响SQL性能:
1. 单个查询的并发度过高会导致查询会花大量的时间在等待并发同步上,从而影响查询性能
2. 并发查询太多会占用大量的CPU资源,从而减少其它查询得到CPU时间的机会,这样的话会使其它查询变慢。
一般来说,如果我们看到SQL Server中有大量的CXPACKET等待类型、或者有许多查询长期处于Runnable的状态(表示该查询在等待CPU时间片),我们会建议客户将并发度降下来,以进一步排查问题。