1、概念缓存
1.关联掩码(affinitymask)服务器
为了执行多任务,MicrosoftWindows2000和WindowsServer2003有时会在不一样的处理器之间移动进程线程。虽然从操做系统方面而言,这种活动是高效的,可是在高系统负荷的状况下,该活动会下降SQLServer的性能,由于每一个处理器缓存都会不断地从新加载数据。若是将各个处理器分配给特定线程,则经过消除处理器的从新加载须要以及减小处理器之间的线程迁移(于是减小上下文切换),能够提升在这些条件下的性能;线程与处理器之间的这种关联称为“处理器关联”。ide
SQLServer经过如下两个关联掩码选项来支持处理器关联:affinitymask(也称为CPUaffinitymask)和affinityI/Omask。对具备33到64个处理器的服务器的CPU和I/O关联支持要求分别使用affinity64mask服务器配置选项和affinity64I/Omask服务器配置选项(这2个服务器配置选项仅在64位操做系统上可用)。http://technet.microsoft.com/zh-cn/library/ms187104.aspx性能
注意:操作系统
SQLServer2012联机手续中提到,后续版本的SQLServer将删除该功能。请不要在新的开发工做中使用该功能,并尽快修改当前还在使用该功能的应用程序。线程
2.并行的开销阈值(costthresholdforparallelism)blog
costthresholdforparallelism选项指定SQLServer建立和运行并行查询计划的阈值。仅当运行同一查询的串行计划的估计开销高于在“并行的开销阈值”中设置的值时,SQLServer才建立和运行该查询的并行计划。开销指的是在特定硬件配置中运行串行计划估计须要花费的时间(秒)。“并行的开销阈值”选项可设置为0到32767之间的任何值。默认值为5。索引
3.最大并行度(maxdegreeofparallelism)进程
可使用maxdegreeofparallelism选项来限制并行计划执行时所用的处理器数。SQLServer考虑为查询、索引数据定义语言(DDL)操做、静态的和由键集驱动的游标填充实施并行执行计划。资源
除了查询和索引操做以外,此选项还控制DBCCCHECKTABLE、DBCCCHECKDB和DBCCCHECKFILEGROUP的并行。使用跟踪标志2528,能够禁用为这些语句所作的并行执行计划。
查询执行计划如何肯定最大并行度?通常按照如下准则:
(1)若要使服务器可以肯定最大并行度,请将此选项设置为默认值0。
(2)若将maximumdegreeofparallelism设置为0,SQLServer将可以使用至多64个可用的处理器。
(3)若要取消生成并行计划,请将maxdegreeofparallelism设置为1。
(4)将该值设置为1到32,767之间的数值来指定执行单个查询所使用的最大处理器核数。若是指定的值比可用的处理器数大,则使用实际可用数量的处理器。
(5)若是计算机只有一个处理器,将忽略maxdegreeofparallelism值。
4.MAXDOP
您能够经过在查询语句中指定MAXDOP查询提示来覆盖查询中的maxdegreeofparallelism值。
索引操做(如建立或从新生成索引、或删除汇集索引)可能会大量占用资源。您能够经过在索引语句中指定MAXDOP索引选项来覆盖索引操做的maxdegreeofparallelism值。MAXDOP值在执行时应用于语句,但不存储在索引元数据中。http://technet.microsoft.com/zh-cn/library/ms189329.aspx
2、配置服务器配置选项
1.SSMS
在服务器(实例)的“属性”窗口选择“高级”节点。
在“最大并行度”框中,选择执行并行计划时所使用的最大处理器数。
在“并行”下,将“并行的开阀值”选项更改成所需值,键入或选择一个值(介于0到32767之间)。
2.SP_Config
在下例中,将最大并行度设置为8,将并行的开销阀值设置为10秒。
USEdb01; EXECsp_configure'costthresholdforparallelism',10; GO |
3.效果
在配置maxdegreeofparallelism和CostThresholdForParallelism选项以后,这些设置将当即生效,无需从新启动服务器。
3、最佳实践建议
使用sp_configure将maxdegreeofparallelism选项设置为8或小于8的值。将此选项设置为大于8的值一般致使没必要要的资源消耗和性能降低。
http://support.microsoft.com/kb/329204
请遵循如下准则:
(1)对于使用8个以上的处理器的服务器使用如下配置:MAXDOP=8。
(2)服务器的有8个或更少的处理器,使用下列配置其中N等于处理器数:MAXDOP=0到N。
(3)对于具备NUMA配置的服务器,MAXDOP不该超过度配给每一个NUMA节点的cpu数。
(4)超线程已启用的服务器的MAXDOP值不该超过物理处理器的数量。
本文结语:
请根据业务负荷的特色,设置关联掩码和最大并行度。根据最佳实践,最大并行度不要超过8。