Max Degree of Parallelism最大并行度配置
由于公司的业务在急速增长中,发现数据库服务器已经基本撑不住这么多并发。一方面,要求开发人员调整并发架构,利用缓存减少查询。一方面从数据库方面改善并发。数据库的并行度可设置如下:
1)cost threshold for parallelism:数据库引擎在编译的时候,预估执行计划的cost;若此cost消耗超过cost threshold for parallelism设置的值;sqlserver就会使用并行执行计划。
2)max degree of parallelism:并行执行计划最多能使用多少线程并行执行语句。默认值为0
在OLTP环境中,会存在大量的并发查询,因此会存在以下两种情况:
1)单个查询的并发过高,可能会导致等待并发同步的消耗
若SQL Server中有大量的CXPACKET等待类型,则可能由于是并发过高的原因,CXPACKET等待类型是由于等待一个或多个线程同步,而出现的等待类型。
然而并非说CXPACKET等待类型等待就是不好,我们只是需要减少此等待类型。具体查询如下
SELECT '查看百分比是否>10%,如果大于10%,考虑降低并行度'
select cast([signal_wait_time_ms] as decimal(30,2))/[wait_time_ms] as [百分比],*
from sys.dm_os_wait_stats (nolock)
where [wait_time_ms]<>0 AND wait_type='CXPACKET'
2)单个查询的并发过高,占用大量cpu资源,导致其他线程无法使用
若有许多查询长期处于Runnable的状态,则可能是由于并发的影响,其他进程拿不到cpu执行。从而大量线程无法running。具体查询如下
SELECT '查看cpu任务'
SELECT scheduler_id, current_tasks_count, runnable_tasks_count
FROM sys.dm_os_schedulers (nolock)
WHERE scheduler_id < 255
如何设置合理的并行度呢?
--配置最大并行度
sp_configure 'max degree of parallelism',1
go
--使设置生效
Reconfigure
go sp_configure 'cost threshold for parallelism',10--设置为10s
go
--使设置生效
Reconfigure
go
1)在OLTP服务器环境中
a)对并发度要求高,对每个用户请求都要及时响应,一般建议将max degree of parallelism 设置为1;因此cost threshold for parallelism 的值没有作用,默认为5即可
b)对并发度要求不高,经常会有复杂查询的数据库,若cpu个数<8,一般建议将max degree of parallelism 设置为cpu数量;若cpu个数>=8建议将值设为8;cost threshold for parallelism 默认即可
2)在OLAP服务器环境中
由于查询均比较复杂,则可将max degree of parallelism 设置为0,同时如果考虑到等待消耗问题,则可以考虑将cost threshold for parallelism 的值设置为10,以降低并发执行的可能
3)在OLTP和OLAP混合环境中
a)对并发度要求高,则可以考虑将max degree of parallelism 设置为<=4,cost threshold for parallelism 值默认即可
b)对并发度要求不高,经常会有复杂查询的数据库,若cpu个数<8,一般建议将max degree of parallelism 设置为cpu数量;若cpu个数>=8建议将值设为8;cost threshold for parallelism 默认即可
Max Degree of Parallelism最大并行度配置的更多相关文章
- SQL Server数据库与max degree of parallelism参数
我们今天主要向大家讲述的是SQL Server数据库中的max degree of parallelism参数,当 SQL Server 数据库在具N个微处理器或是 CPU 的计算机上运行时,它将为每 ...
- Parallel.ForEach 之 MaxDegreeOfParallelism
参考:Max Degree of Parallelism最大并行度配置 结论: 与设置的线程数有关 有设置的并行度有关 测试如下: @@@code System.Threading.ThreadPoo ...
- SQL Server中的“最大并行度”的配置建议
SQL Server中的最大并行度(max degree of parallelism)如何设置呢? 设置max degree of parallelism有什么好的建议和指导方针呢?在微软官方文档R ...
- SQL Serve里你总要去改变的3个配置选项
你用安装向导安装了全新的SQL Server,最后你点击了完成按钮.哇噢~~~现在我们可以把我们的服务器进入生产了!抱歉,那并不是真的,因为你的全新SQL Server默认配置是错误的. 是的,你没看 ...
- SQL Server安装完成后3个需要立即修改的配置选项(转载)
你用安装向导安装了全新的SQL Server,最后你点击了完成按钮.哇噢~~~现在我们可以把我们的服务器进入生产了!抱歉,那并不是真的,因为你的全新SQL Server默认配置是错误的. 是的,你没看 ...
- 第十七章——配置SQLServer(1)——为SQLServer配置更多的处理器
原文:第十七章--配置SQLServer(1)--为SQLServer配置更多的处理器 前言: SQLServer提供了一个系统存储过程,SP_Configure,可以帮助你管理实例级别的配置.微软建 ...
- MSSQLSERVER并行度
Microsoft SQL Server最大并行度(MAXDOP) 配置选项控制并行计划用于执行查询的处理器的数目.此选项确定用于执行工作并行查询计划运算符的计算和线程资源.根据是否 SQL Serv ...
- SQL Server 最大并行度
一.概念 1.关联掩码(affinitymask) 为了执行多任务,MicrosoftWindows2000和WindowsServer2003有时会在不同的处理器之间移动进程线程.虽然从操作系统方面 ...
- SQL Serve里DBA要去改变的3个配置选项
用安装向导安装了全新的SQL Server,最后你点击了完成按钮.哇噢~~~现在我们可以把我们的服务器进入生产了! 抱歉,那并不是真的,因为你的全新SQL Server默认配置是未优化的,一个合格的D ...
随机推荐
- dataGrid查询表格
waf("#Gird").dataGrid("reloadGrid") //重新发请求去装载数据 waf("#Grid").wafGrid( ...
- TCP/IP详解 笔记十四
TCP/IP协议(二) 连接的建立与终止 tcpdump -S输出TCP报文的格式 格式: 源>目的:标志 (标志就是tcp头部).标识首字符意义如下: 例如:telnet 某服务的输出(包括 ...
- HDU 1811 Rank of Tetris(拓扑排序+并查集)
题目链接: 传送门 Rank of Tetris Time Limit: 1000MS Memory Limit: 32768 K Description 自从Lele开发了Rating系统, ...
- jquery获取复选框的值
勾选checkbox,并把勾选的值显示在某个div中 <!DOCTYPE html > <html> <head> <meta charset="U ...
- linux 学习基础7之脚本的练习
练习:传递一个用户名参数给脚本,判断此用户的用户名跟其基本组的组名是否一致,并将结果显示出来.写一个脚本:#!/bin/bashUSER=$1if [ ! $# -eq 1 ];then echo ...
- 给linux添加yum源。
在玩linux的过程中,经常会下载一些源码包.软件大多是国外人写的,由于众所周知的原因,网络下载很慢. 所以想到了更新yum源的方法. 我的linux版本是CentOS6.3的. 以下参考百度. 1, ...
- UML图例
概述 常用建模方法:BOOCH.OMT.OOSE等 统一建模语言:UML(Unified Modeling Language) 软件开发过程:RUP(Rational Unified Process) ...
- 自然语言18.2_NLTK命名实体识别
QQ:231469242 欢迎nltk爱好者交流 http://blog.csdn.net/u010718606/article/details/50148261 NLTK中对于很多自然语言处理应用有 ...
- MySQL增加列,修改列名、列属性,删除列
mysql修改表名,列名,列类型,添加表列,删除表列 alter table test rename test1; --修改表名 alter table test add column name v ...
- 一台机子上运行使用不同Java版本的多个tomcat
方法 在tomcat/bin/下创建setenv.sh并写入 export JAVA_HOME=/usr/share/jvm/jdk1..0_91 When you starting tomcat u ...