博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
六、CPU优化(5)最大并行度
阅读量:6681 次
发布时间:2019-06-25

本文共 2255 字,大约阅读时间需要 7 分钟。

一、概念

1.关联掩码(affinitymask)

  为了执行多任务,MicrosoftWindows2000和WindowsServer2003有时会在不同的处理器之间移动进程线程。虽然从操作系统方面而言,这种活动是高效的,但是在高系统负荷的情况下,该活动会降低SQLServer的性能,因为每个处理器缓存都会不断地重新加载数据。如果将各个处理器分配给特定线程,则通过消除处理器的重新加载需要以及减少处理器之间的线程迁移(因而减少上下文切换),可以提高在这些条件下的性能;线程与处理器之间的这种关联称为“处理器关联”。

  SQLServer通过以下两个关联掩码选项来支持处理器关联:affinitymask(也称为CPUaffinitymask)和affinityI/Omask。对具有33到64个处理器的服务器的CPU和I/O关联支持要求分别使用affinity64mask服务器配置选项和affinity64I/Omask服务器配置选项(这2个服务器配置选项仅在64位操作系统上可用)。

注意:

  SQLServer2012联机手续中提到,后续版本的SQLServer将删除该功能。请不要在新的开发工作中使用该功能,并尽快修改当前还在使用该功能的应用程序。

2.并行的开销阈值(costthresholdforparallelism)

  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值在执行时应用于语句,但不存储在索引元数据中。

二、配置服务器配置选项

1.SSMS

  在服务器(实例)的“属性”窗口选择“高级”节点。

  在“最大并行度”框中,选择执行并行计划时所使用的最大处理器数。

  在“并行”下,将“并行的开阀值”选项更改为所需值,键入或选择一个值(介于0到32767之间)。

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选项之后,这些设置将立即生效,无需重新启动服务器。

三、最佳实践建议

  使用sp_configure将maxdegreeofparallelism选项设置为8或小于8的值。将此选项设置为大于8的值通常导致不必要的资源消耗和性能下降。

  请遵循以下准则:

(1)对于使用8个以上的处理器的服务器使用以下配置:MAXDOP=8。

(2)服务器的有8个或更少的处理器,使用下列配置其中N等于处理器数:MAXDOP=0到N。

(3)对于具有NUMA配置的服务器,MAXDOP不应超过分配给每个NUMA节点的cpu数。

(4)超线程已启用的服务器的MAXDOP值不应超过物理处理器的数量。

本文结语:

  请根据业务负荷的特点,设置关联掩码和最大并行度。根据最佳实践,最大并行度不要超过8。

转载地址:http://rznao.baihongyu.com/

你可能感兴趣的文章
sqlite 打开数据库
查看>>
http://xpleaf.blog.51cto.com/
查看>>
Thrift使用教程(Java版本)
查看>>
我的友情链接
查看>>
通过SSH证书实现Putty免密码登录CentOS
查看>>
Java IO类库之Bits
查看>>
ERROR 1217 (23000): Cannot delete or update a pare
查看>>
oracle 11g RAC搭建 ASM存储
查看>>
函数学习-bytearray()
查看>>
CentOS7安装配置telnet-server
查看>>
GitOSC和GitHub上传项目
查看>>
全局静态变量析构和线程结束先后顺序问题
查看>>
[PYTHON] 核心编程笔记(12.Python模块)
查看>>
windows下MD5-SHA1校验
查看>>
Linux学习记录-2015-08-20--常用命令1
查看>>
Android工程引用另外一个工程的正确/错误方法
查看>>
Testlink使用介绍
查看>>
【动态规划】0-1背包问题原理和实现
查看>>
c3p0详细配置
查看>>
jsfl导出库里面的PNG图片
查看>>