由于公司的业务在急速增长中,发现数据库服务器已经基本撑不住这么多并发。一方面,要求开发人员调整并发架构,利用缓存减少查询。一方面从数据库方面改善并发。数据库的并行度可设置如下:

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最大并行度配置的更多相关文章

  1. SQL Server数据库与max degree of parallelism参数

    我们今天主要向大家讲述的是SQL Server数据库中的max degree of parallelism参数,当 SQL Server 数据库在具N个微处理器或是 CPU 的计算机上运行时,它将为每 ...

  2. Parallel.ForEach 之 MaxDegreeOfParallelism

    参考:Max Degree of Parallelism最大并行度配置 结论: 与设置的线程数有关 有设置的并行度有关 测试如下: @@@code System.Threading.ThreadPoo ...

  3. SQL Server中的“最大并行度”的配置建议

    SQL Server中的最大并行度(max degree of parallelism)如何设置呢? 设置max degree of parallelism有什么好的建议和指导方针呢?在微软官方文档R ...

  4. SQL Serve里你总要去改变的3个配置选项

    你用安装向导安装了全新的SQL Server,最后你点击了完成按钮.哇噢~~~现在我们可以把我们的服务器进入生产了!抱歉,那并不是真的,因为你的全新SQL Server默认配置是错误的. 是的,你没看 ...

  5. SQL Server安装完成后3个需要立即修改的配置选项(转载)

    你用安装向导安装了全新的SQL Server,最后你点击了完成按钮.哇噢~~~现在我们可以把我们的服务器进入生产了!抱歉,那并不是真的,因为你的全新SQL Server默认配置是错误的. 是的,你没看 ...

  6. 第十七章——配置SQLServer(1)——为SQLServer配置更多的处理器

    原文:第十七章--配置SQLServer(1)--为SQLServer配置更多的处理器 前言: SQLServer提供了一个系统存储过程,SP_Configure,可以帮助你管理实例级别的配置.微软建 ...

  7. MSSQLSERVER并行度

    Microsoft SQL Server最大并行度(MAXDOP) 配置选项控制并行计划用于执行查询的处理器的数目.此选项确定用于执行工作并行查询计划运算符的计算和线程资源.根据是否 SQL Serv ...

  8. SQL Server 最大并行度

    一.概念 1.关联掩码(affinitymask) 为了执行多任务,MicrosoftWindows2000和WindowsServer2003有时会在不同的处理器之间移动进程线程.虽然从操作系统方面 ...

  9. SQL Serve里DBA要去改变的3个配置选项

    用安装向导安装了全新的SQL Server,最后你点击了完成按钮.哇噢~~~现在我们可以把我们的服务器进入生产了! 抱歉,那并不是真的,因为你的全新SQL Server默认配置是未优化的,一个合格的D ...

随机推荐

  1. [NOIP2012] 提高组 洛谷P1084 疫情控制

    题目描述 H 国有 n 个城市,这 n 个城市用 n-1 条双向道路相互连通构成一棵树,1 号城市是首都, 也是树中的根节点. H 国的首都爆发了一种危害性极高的传染病.当局为了控制疫情,不让疫情扩散 ...

  2. Redis未授权访问漏洞分析

    catalog . Redis简介 . 漏洞概述 . 漏洞利用方式 . 修复方式 1. Redis简介 Relevant Link: http://www.cnblogs.com/LittleHann ...

  3. MyEclipse 8.5 注册码 生成代码

    import java.io.*; public class MyEclipseGen { private static final String LL = "Decompiling thi ...

  4. Newton-Raphson算法简介及其R实现

    本文简要介绍了Newton-Raphson方法及其R语言实现并给出几道练习题供参考使用. 下载PDF格式文档(Academia.edu) Newton-Raphson Method Let $f(x) ...

  5. hdu 2034 - 集合操作

    题意:集合A,B,计算集合差A-B(求只在集合A内的数) 解法: 选用STL内的集合set 1.建立set 1: #include<set> 2:   3: set<int> ...

  6. 卸载自己编译的程序(ubuntu14.04)

    cd 源代码目录make clean./configuremake uninstall

  7. 什么是xmlschema

    XML Schema定义(XML Schema Definition,XSD)是一套W3C标准,用于基于XML的称为XML Schema的类型系统.用于定义的语言是一种称为XML模式定义语言(XML ...

  8. 【原】js获取height为auto的高度问题

    今天用react写一个页面,需要获取一个img高度设置为auto的高度,可是一直获取到的要么是0,要么是null,因为页面加载完了图片不一定加载完. 当我把高度由 auto 设置为固定值之后,又可以获 ...

  9. 第六章 jQuery和ajax应用

    ajax是异步JavaScript和xml的简称. 一. ajax补白 优势 不足(不一定是不足) 不需要任何插件(但需要浏览器支持js) XMLHttpRequest对象在不同浏览器下有差异 优秀的 ...

  10. Codeforces Problem 708A Letters Cyclic Shift

     题目链接: http://codeforces.com/problemset/problem/708/A 题目大意: 从字符串s中挑选出一个子串(非空),将该子串中的每个字母均替换成前一个字母,如' ...