--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. 电商类web原型制作分享——美丽说【附源文件】

    美丽说是国内白领女性时尚消费品牌,精选上千家优质卖家供应商,为用户提供女装.女鞋.女包.配饰.美妆等品类的优质时尚商品. 此原型模板所用到的组件有搜索框.下拉菜单.输入框.选项卡等.交互动作有切换选项 ...

  2. Python内置logging模块

    最近调试Python代码比较多,发现logging模块很好用. 我的用法如下: import logging logging.basicConfig(level=logging.INFO, forma ...

  3. 【转】C#异步的世界【上】

    [转]C#异步的世界[上] 新进阶的程序员可能对async.await用得比较多,却对之前的异步了解甚少.本人就是此类,因此打算回顾学习下异步的进化史. 本文主要是回顾async异步模式之前的异步,下 ...

  4. hibernate项目

    http://blog.csdn.net/wzygis/article/details/22985751

  5. eclipse安装提要

    svn 插件安装http://subclipse.tigris.org/update_1.12.x教程地址http://jingyan.baidu.com/article/f71d60376b4c57 ...

  6. 40、IOS自动打包-Python脚本

    第一种:基于编译的打包 编译工程--找到.app文件--新建Payload文件夹--拷贝.app到Payload文件夹--压缩成zip--更改后缀名为ipa--完成! 第二种(有问题,暂时不需要看) ...

  7. 【慕课网实战】Spark Streaming实时流处理项目实战笔记一之铭文升级版

    第一章:课程介绍 铭文一级: VMware Fusion Mac上搭建:为了给大家演示如何使用我们的OOTB环境 Hadoop环境:虚拟机,我是远程登录 Mac 那么就不需要使用我们的OOTB环境 V ...

  8. 空指针、NULL指针、零指针

    1. 空指针.NULL指针.零指针 1.1 什么是空指针常量 0.0L.'\0'.3 - 3.0 * 17 (它们都是“integer constant expression”)以及 (void*)0 ...

  9. 1.8.1suspend与resume方法使用

    暂停线程意味着线程还能恢复运行 suspend()方法暂停线程.resume()恢复线程 测试如下 package com.cky.thread; /** * Created by edison on ...

  10. Simultaneous Localization and Mapping Technology Based on Project Tango

    Abstract: Aiming at the problem of system error and noise in simultaneous localization and mapping ( ...