6、CPU优化(5)最大并行度

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之间)。

131407651.png

2.SP_Config

  在下例中,将最大并行度设置为8,将并行的开销阀值设置为10秒。

USEdb01;
GO
EXECsp_configure'showadvancedoptions',1;
GO
RECONFIGUREWITHOVERRIDE;
GO
EXECsp_configure'maxdegreeofparallelism',8;

EXECsp_configure'costthresholdforparallelism',10;

GO
RECONFIGUREWITHOVERRIDE;
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。

相关文章
相关标签/搜索