--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 等待的更多相关文章

  1. CXPACKET等待事件

    今天收到数据库预警,发现连接数较多.于是立马登录查看机器的基本情况: select * from sys.sysprocesses 查看了一下连接数,发现有两个进程都处于CXPACKET状态,而且看得 ...

  2. SQL点滴13—收集SQLServer线程等待信息

    原文:SQL点滴13-收集SQLServer线程等待信息 要知道线程等待时间是制约SQL Server效率的重要原因,这一个随笔中将学习怎样收集SQL Server中的线程等待时间,类型等信息,这些信 ...

  3. SQL SERVER ->> CXPacket等待类型

    最近做了一个项目,把整个数据仓库平台下所有的表和索引都改成页级别的数据压缩.昨天发现测试环境下的某个workload跑得比平时慢.最后我们定位了到这个workload做的事情中可能造成性能下降的地方, ...

  4. 收集SQLServer线程等待信息

    要知道线程等待时间是制约SQL Server效率的重要原因,这一个随笔中将学习怎样收集SQL Server中的线程等待时间,类型等信息,这些信息是进行数据库优化的依据. sys.dm_os_wait_ ...

  5. 分享一下我研究SQLSERVER以来收集的笔记

    分享一下我研究SQLSERVER以来收集的笔记 前言 为什麽分享??因为像现在网上很多人攻城师那样,转行去卖水果,卖早餐,总有一日我也会离开这个行业的 由于本人不是在大公司上班工资很低,我希望有一天存 ...

  6. SQL 笔记 By 华仔

    -------------------------------------读书笔记------------------------------- 笔记1-徐 最常用的几种备份方法 笔记2-徐 收缩数据 ...

  7. WaitType:CXPACKET

    CXPACKET 等待类型是SQL Server 并发执行一个query时产生的.在run一个big query时,SQL Server充分利用系统的所有资源(CPU,Memory,IO),在最短时间 ...

  8. SQLServer 维护脚本分享(06)CPU

    --CPU相关视图 SELECT * FROM sys.dm_os_sys_info SELECT * FROM sys.dm_exec_sessions SELECT * FROM sys.sysp ...

  9. [翻译]SQL Server等待事件—THREADPOOL

      前言: 本文是对SQLSkills上一篇关于SQL Server中THREADPOOL等待的博客的翻译,本文也不是完全翻译,有些地方适当加入了自己的一些认知.如有翻译不对或不好的地方,敬请指出,大 ...

随机推荐

  1. [Robot Framework] Robot Framework怎么调试?

    Robot Framework怎么debug? 在eclipse里面安装一个插件,就可以debug robot framework的project. 插件下载地址: https://github.co ...

  2. 不立flag了……

    当天刚说再也不想下这游戏了,后来和女友聊了会天视了会屏又动摇了..后悔和她那么计较这些小事,可能玩游戏时生气时就想不起来那么多事了吧..于是游戏过两天就又下回来了.. 这两天培训课程也是很快的感觉,昨 ...

  3. IOS初级:NSKeyedArchiver

    NSKeyedArchiver对象归档 首先要实现<NScoding>里面的两个代理方法initWithCoder,encodeWithCoder @property (nonatomic ...

  4. 找不到类SimpleJdbcTemplate ParameterizedRowMapper cannot be resolved

    找不到类SimpleJdbcTemplate 背景 想编译个web应用,原来spring-jdbc.jar用的是Spring 3.1,今天改成用Spring 4.3,报了这个错误. 现象 编译不通过, ...

  5. ListView嵌套 EditText的光标不显示

    ListView嵌套EditView,有可能会出现了下面现象: 点击EditView,EditView获取焦点后,有可能光标不显示,也有可能光标不闪烁.点击多次后,光标才正常显示. 获取焦点后,edi ...

  6. RSS工具关注期刊,方便快速获取及时大量的文献信息

    第一步: 第二步: 第三步: RSS : 很好的一个东西,到了中国,咋就水土不服了呢...

  7. 解决IDEA、Pycharm连接数据库乱码的问题

    一.IDEA. 使用IDEA连接数据库: import java.sql.Connection;import java.sql.DriverManager;import java.sql.Result ...

  8. CString成员函数详解[转]

    1.构造函数(常用) CString( const unsigned char* psz );      例:char s[]="abcdef";              cha ...

  9. 普通用户修改.bash_profile 权限问题

    例如oracle用户想要修改它下面的.bash_profile文件: 在命令行运行: [root@localhost ~]# ls -lh /home/oracle/.bash_profile

  10. Host is not allowed to connect to this MySQL server---------------->windows10

    错误,数据库无法远程连接. 第一步,关闭本地防火墙 注意: 两台连接的机器都需要关闭 第二步,两台机器互相ping,看是否可以互相访问 丢失为零,意为可以连接. 第三步登录数据库 第四步,切换,数据库 ...