MSSQLSERVER并行度
Microsoft SQL Server最大并行度(MAXDOP) 配置选项控制并行计划用于执行查询的处理器的数目。此选项确定用于执行工作并行查询计划运算符的计算和线程资源。根据是否 SQL Server 设置了对称多处理 (SMP) 计算机、 非一致内存访问 (NUMA) 计算机或启用超线程的处理器上,您必须适当地配置最大并行度选项。本文讨论了可用于配置 SQL Server 的最大并行度选项,当您使用sp_configure系统存储过程的一般原则。
如果查询指定了此选项,则选项 (MAXDOP)事务处理 SQL 查询提示可以替代sp_configure值中的最大并行度选项。在 SQL Server 2000 中,重写在提示中指定的值小于或等于sp_configure值的情况下,才会生效。在 SQL Server 2005 及更高版本,该重写始终起作用。在 SQL Server 2008年和更高版本中,如果 MAXDOP 值超出值配置通过使用资源管理器中,数据库引擎所使用的资源调控器 MAXDOP 值。当您使用 MAXDOP 查询提示,与最大并行度选项一起使用的所有语义规则都适用。可以重写或影响 MAXDOP 设置其它两个选项如下所示 ︰
注意:最大并行度配置选项可以完成不限制 SQL Server 使用的处理器数。要配置 SQL Server 使用的处理器的数目,请使用关系掩码配置选项。

OLTP系统:
在纯OLTP系统上,它的事务较短,SQL查询时间短,但是非常频繁。设置“Maximum degree of Parallelism”(MAXDOP)为1。这样做可以确保查询永远不必使用并行方式运行,并且不会导致更多的数据库引擎开销。
OLAP系统:
Data-warehousing / Reporting server: 因为查询执行时间一般较长,建议设置“Maximum degree of Parallelism”(MAXDOP)为0。
这样大多数查询将会利用并行处理,执行时间较长的查询也会受益于多处理器而提高性能。
混合系统
Mixed System (OLTP & OLAP):这样环境会是一个挑战,必须找到正确的平衡点。一般采取了非常简单的方法。设置“Maximum degree of
Parallelism”(MAXDOP)为2,这样意味着查询仍会使用并行操作但是仅利用2颗CPU。并且把“并行查询阀值”(cost threshold for parallelism)设置为较高的值,这样的话,不是所有的查询都有资格使用并行,除了那些查询成本较高的查询………
cost threshold for parallelism 选项可设置为 0 到 32767 之间的任何值。默认值为 5。
个人比较倾向于第二种(max degree of parallelism)设置的指导方针,混合系统设置max degree of parallelism,建议结合第一种推荐设置与第二种,然后结合等待事件CXPACKET的情况,作出适当的调整。不要指望一成不变的推荐设置,这样是不合理。只能根据比较大众的推荐设置,然后结合自身系统的具体情况,作出适当的调整、优化。
对于NUMA与SMP不太清楚的地方,可以参考下面资料。
传统的多核运算是使用SMP(Symmetric Multi-Processor )模式:将多个处理器与一个集中的存储器和I/O总线相连。所有处理器只能访问同一个物理存储器,因此SMP系统有时也被称为一致存储器访问(UMA)结构体系,一致性意指无论在什么时候,处理器只能为内存的每个数据保持或共享唯一一个数值。很显然,SMP的缺点是可伸缩性有限,因为在存储器和I/O接口达到饱和的时候,增加处理器并不能获得更高的性能。
NUMA模式是一种分布式存储器访问方式,处理器可以同时访问不同的存储器地址,大幅度提高并行性。 NUMA模式下,处理器被划分成多个"节点"(node), 每个节点被分配有的本地存储器空间。 所有节点中的处理器都可以访问全部的系统物理存储器,但是访问本节点内的存储器所需要的时间,比访问某些远程节点内的存储器所花的时间要少得多。
MSSQLSERVER并行度的更多相关文章
- MSSQLSERVER添加c# clr程序集的使用方法
前言 MSSQLSERVER提供程序集,无疑可以让编程人员更加便捷的操作数据库数据,比如c#写的函数,可以在数据库当作sql的函数使用,你想想他对不熟悉数据库的程序员来说是有多么的嗨.这么好的机制,大 ...
- mssqlserver数据导出到另外一个数据库
mssqlserver数据导出到另外一个数据库 准备源数据库,找到想要导出的数据库,右键选择"任务"再选择"导出数据" 设置源数据库信息 3.设置目标数据库,导 ...
- MSSQLServer 纵向表转横向表 横向表转纵向表 行转列 列转行
MSSQLServer 纵向表转横向表 横向表转纵向表 建表语句及插入数据语句: CREATE TABLE Test_y( ) NULL, ) NULL, [Grade] [int] NULL ) ...
- mssqlserver 数据库一直提示“正在还原”
今天访问服务器,突然发现不知道数据库被谁给还原了,而且一直处于还原状态无法结束. 通过查询说是恢复进程被挂起了,最终通过命令: RESTORE database dbname with recov ...
- SQL Server中的“最大并行度”的配置建议
SQL Server中的最大并行度(max degree of parallelism)如何设置呢? 设置max degree of parallelism有什么好的建议和指导方针呢?在微软官方文档R ...
- Win 8.1 Pro &MSSQLServer 2014 Enterprise
给Thinkpad E431 安装上 Windows 8.1 Pro 之后,一直都安装不上 MSSQLServer 2005 DEV / ENT,2008 ENT / STAND, 2008 R2 ...
- MSSQLSERVER服务无法启动的解决方案
MSSQLSERVER服务无法启动的解决方案 有时候sqlserver无法启动了,原因是mssqlserver服务没有启动,当你手动启动时,又出现服务无法响应的可恶错误提示... 笔者“有幸”遇到了, ...
- Max Degree of Parallelism最大并行度配置
由于公司的业务在急速增长中,发现数据库服务器已经基本撑不住这么多并发.一方面,要求开发人员调整并发架构,利用缓存减少查询.一方面从数据库方面改善并发.数据库的并行度可设置如下: 1)cost thre ...
- 修改Oracle并行度的方法
Oracle并行度默认为1,适当修改并行度对提高性能有很大帮助 1.查看并行度 select table_name,degree from user_tables; --并行度按照用户表分别设置 2. ...
随机推荐
- 实战-Mysql5.6.36脚本编译安装及初始化
概述 本文为centos7.3自动化编译安装mysql5.3.6的脚本及后续初始化操作,话不多少,直接上脚本. 安装脚本install.py如下: #coding=utf-8 #!/usr/bin/p ...
- Scala入门系列(七):面向对象之继承
extends 与Java一样,也是使用extends关键字,使用继承可以有效复用代码 class Person { private var name = "leo" def ge ...
- centos7 简单搭建lnmp环境
1:查看环境: 1 2 [root@10-4-14-168 html]# cat /etc/redhat-release CentOS release 6.5 (Final) 2:关掉防火墙 1 [r ...
- Linux基础-最基础
Linux基础 为了更好的学习知识,开通此博客,以前博客丢了...记录一下知识点,希望能在这里与大家互相学习交流. 20171113 14:00 Linux基础-基本知识 Linux树状文件系统结构 ...
- underscore源码解析(一)
留存root // Establish the root object, `window` (`self`) in the browser, `global` // on the server, or ...
- 企业级Tomcat安全管理优化方案
telnet管理端口保护 1. 修改默认的8005管理端口为不易猜测的端口(大于1024): <Server port=" shutdown="dangerous" ...
- MyBatis_CURD
一.项目结构 二.代码实现 package com.jmu.bean; public class Student { private Integer id; private String name; ...
- Shell编程中的变量作用域
有两个shell脚本文件: a.sh name=Tom echo $name ./b.sh b.sh echo "name in b.sh:"$name 运行./a.sh时输出结果 ...
- git上传到github
一. Git创建 1. git init 命令来初始化一个Git仓库 2. 添加文件到Git仓库,分两步 1) 使用命令 git add <file>,可以反复多次添加,添加多个文件 2) ...
- python __getattr__ 巧妙应用
在之前的文章有提到__getattr__函数的作用: 如果属性查找(attribute lookup)在实例以及对应的类中(通过__dict__)失败, 那么会调用到类的__getattr__函数, ...