SQLSERVER CXPACKET 等待
--SQLSERVER CXPACKET 等待 2013-6-11
2 --联机丛书:
3 --当尝试同步查询处理器交换迭代器时出现。如果针对该等待类型的争用成为问题时,可以考虑降低并行度
4
5
6
7 --CXPACKET 解释:
8 --
9 --当为SQL查询创建一个并行操作时,会有多个线程去执行这个查询。每个查询处理不同的数据集或行集。
10 --
11 --因为某些原因,一个或多个线程滞后,而产生了CXPACKET等待状态。
12 --
13 --有一个组织/协调(organizer/coordinator)线程(Thread 0),它需要等待所有线程完成并聚合数据来呈现给客户端。
14 --
15 --组织线程必须等待所有线程完成处理才能进行下一步。由于组织线程等待缓慢的线程完成处理所产生的等待,就叫CXPACKET等待。
16 --
17 --请注意,并不是所有的CXPACKET等待类型都是不好的事情。你也许会遇某个CXPACKET等待是完全有意义的案例,有时它也是不可避免的。
18 --
19 --如果你在任何查询上禁止此种等待,那么查询也许会变慢,因为不能为它执行并行操作。
20
21 --减少CXPACKET等待:
22 --
23 --我们不能抛开服务器负载类型来讨论减少CXPACKET等待。
24 --
25 --OLTP: 在纯OLTP系统上,它的事务较短,查询也不长,但是通常很快速。设置
26 --“Maximum degree of Parallelism”(MAXDOP)为1。
27 --
28 --这样做可以确保查询永远不必使用并行方式运行,并且不会导致更多的数据库引擎开销。
29
30 EXEC sys.sp_configure N'cost threshold for parallelism', N'1'
31 GO
32 RECONFIGURE WITH OVERRIDE
33 GO
34
35
36
37 --Data-warehousing / Reporting server: 因为查询执行时间一般较长,建议设置“Maximum degree of Parallelism”(MAXDOP)为0。
38 --
39 --这样大多数查询将会利用并行处理,执行时间较长的查询也会受益于多处理器而提高性能。
40 --
41 --Mixed System (OLTP & OLAP):这样环境会是一个挑战,必须找到正确的平衡点。我采取了非常简单的方法。
42 --
43 --我设置“Maximum degree of Parallelism”(MAXDOP)为2,这样意味着查询仍会使用并行操作但是仅利用2颗CPU。
44 --
45 --然而,我把“并行查询阀值”设置为较高的值,这样的话,不是所有的查询都有资格使用并行,除了那些查询成本较高的查询。
46 --
47 --在一个即有OLTP查询又有报表服务器的系统上,我发现这样做运行得很好。
48 --
49 --在这里我将会设置“‘Cost Threshold for Parallelism’”为25,你可以选择任何值。但你只能通过在系统上做实验来找到合适的值。
50 --
51 --在下面的脚本中,我设置“Max Degree of Parallelism”为2,这样的话,那些具有较高成本的查询(这里是25),
52 --将会在2颗CPU上执行并行查询。
53 --
54 --同时,不管服务器有多少颗CPU,查询只会选择两颗CPU来执行。
55
56
57 EXEC sys.sp_configure N'cost threshold for parallelism', N'25' --临界值,当查询成本达到25的时候
58 GO
59 EXEC sys.sp_configure N'max degree of parallelism', N'2' --使用两颗CPU
60 GO
61 RECONFIGURE WITH OVERRIDE
62 GO
63
64 --------------------------------------------------------
65 --在查询语句中使用maxdop
66 SELECT COUNT(*)
67 FROM t1 a
68 INNER LOOP JOIN t1 b ON b.c1 = a.c1
69 OPTION ( MAXDOP 1 ) --不允许使用并行处理
70 go
SQLSERVER CXPACKET 等待的更多相关文章
- CXPACKET等待事件
今天收到数据库预警,发现连接数较多.于是立马登录查看机器的基本情况: select * from sys.sysprocesses 查看了一下连接数,发现有两个进程都处于CXPACKET状态,而且看得 ...
- SQL点滴13—收集SQLServer线程等待信息
原文:SQL点滴13-收集SQLServer线程等待信息 要知道线程等待时间是制约SQL Server效率的重要原因,这一个随笔中将学习怎样收集SQL Server中的线程等待时间,类型等信息,这些信 ...
- SQL SERVER ->> CXPacket等待类型
最近做了一个项目,把整个数据仓库平台下所有的表和索引都改成页级别的数据压缩.昨天发现测试环境下的某个workload跑得比平时慢.最后我们定位了到这个workload做的事情中可能造成性能下降的地方, ...
- 收集SQLServer线程等待信息
要知道线程等待时间是制约SQL Server效率的重要原因,这一个随笔中将学习怎样收集SQL Server中的线程等待时间,类型等信息,这些信息是进行数据库优化的依据. sys.dm_os_wait_ ...
- 分享一下我研究SQLSERVER以来收集的笔记
分享一下我研究SQLSERVER以来收集的笔记 前言 为什麽分享??因为像现在网上很多人攻城师那样,转行去卖水果,卖早餐,总有一日我也会离开这个行业的 由于本人不是在大公司上班工资很低,我希望有一天存 ...
- SQL 笔记 By 华仔
-------------------------------------读书笔记------------------------------- 笔记1-徐 最常用的几种备份方法 笔记2-徐 收缩数据 ...
- WaitType:CXPACKET
CXPACKET 等待类型是SQL Server 并发执行一个query时产生的.在run一个big query时,SQL Server充分利用系统的所有资源(CPU,Memory,IO),在最短时间 ...
- SQLServer 维护脚本分享(06)CPU
--CPU相关视图 SELECT * FROM sys.dm_os_sys_info SELECT * FROM sys.dm_exec_sessions SELECT * FROM sys.sysp ...
- [翻译]SQL Server等待事件—THREADPOOL
前言: 本文是对SQLSkills上一篇关于SQL Server中THREADPOOL等待的博客的翻译,本文也不是完全翻译,有些地方适当加入了自己的一些认知.如有翻译不对或不好的地方,敬请指出,大 ...
随机推荐
- How to make a USB stick use ISO image file in debian
4.3.1. Preparing a USB stick using a hybrid CD or DVD image Debian CD and DVD images can now be writ ...
- @1-2初识Python爬虫
初识Python爬虫 Python爬虫(入门+进阶) DC学院 环境搭建: Python2与Python3的差异:python2与python3整体差异不大,大多是一些语法上的区别,考虑到py ...
- 基于tomcat的solr环境搭建(Linux)
♥♥ solr是基于lucene的一个全文检索服务器,提供了一些类似webservice的API接口,用户可以通过http请求solr服务器,进行索引的建立和索引的搜索.索引建立的过程:用户提交的文 ...
- 【Linux】 Ncures库的介绍与安装
Ncures库的介绍 ncurses(new curses)是一套编程库,它提供了一系列的函数以便使用者调用它们去生成基于文本的用户界面. ncurses名字中的n意味着“new”,因为它是curse ...
- spring学习 五 依赖注入的方式
依赖注入有两种方式: 1 构造注入,如果<bean>标签下使用<contructor-arg>,则是构造注入 2 setter注入,就是调用setter方法注入,如果<b ...
- 1.2OpenCV如何扫描图像,利用查找表和计时
查找表 颜色缩减法:如果矩阵元素存储的是单通道像素,使用C或C++的无符号字符类型,那么像素可有256个不同值. 但若是三通道图像,这种存储格式的颜色数就太多了(确切地说,有一千六百多万种).用如此之 ...
- Lyft Level 5 Challenge 2018 - Final Round (Open Div. 2) C. The Tower is Going Home(思维+双指针)
https://codeforces.com/contest/1075/problem/C 题意 一个宽为1e9*1e9的矩阵中的左下角,放置一个车(车可以移动到同一行或同一列),放置一些墙,竖的占据 ...
- vue的饿了么写作感受
1.在重复使用的组件中,要把重复使用组件的需要在数据的请求的地方设置为在富组件中,通过props船只到子组件,这样在重复调用次组件的时候既可以很好的避免组件的值的冲突 2.getData的使用,把所有 ...
- ubuntu16.04 编译安卓4.2
1. root@ge-Lenovo:/usr/lib/jvm# cd /home/material/install/jdk/ jdk-6u29-linux-x64.bin jdk-6u45-l ...
- VIP之Clipper
裁剪器II提供方法从视频流中选择有效区域并丢弃剩余部分. 指定有效区域的方式是从到边界的偏移量,或者给出有效区左上角的像素坐标和有效区的宽及高度. 裁剪器IP核通过读取Avalon-ST视频流中的控制 ...