首页 > 其他分享 >CXPACKET等待类型分析

CXPACKET等待类型分析

时间:2023-02-02 14:06:44浏览次数:38  
标签:语句 CPU 索引 SQL 类型 等待 CXPACKET

背景

客户反馈今天8点钟开始进入业务高峰期后,数据库的CPU利用率非常高,基本达到了100%,前端应用也非常慢。怀疑是昨晚业务系统升级导致,请我们紧急协助分析。

现象

登录到SQL专家云,进入相关时间的活动会话的原始数据页面,看到很多会话的等待类型是CXPACKET,并且等待时间达到了几十秒。

CXPACKET等待类型分析_CXPACKET等待类型

查看具体的SQL语句,发现都很简单。

CXPACKET等待类型分析_数据库运维_02

分析

首先简单介绍一下CXPACKET等待类型:当SQL Server进行某些复杂的运算(例如大表或索引的扫描)时,为了加快执行速度,采用多线程并行的方式进行,每个线程处理一部分数据,最后再进行结果合并,在等待一个或多个线程返回结果时就会产生CXPACKET等待类型,类似的等待类型还有CXCONSUMER。对于复杂的SQL语句,并行的方式可以大幅的降低执行时间,但是对于简单的、高并发的SQL语句,CXPACKET等待类型就会产生严重的性能问题。

如此简单的SQL语句还要使用并行,第一反应就是缺少合适的索引,通过SQL专家云的智能分析,在执行计划中发现行数为1900多万的表上有缺失索引,而且影响度非常高。

CXPACKET等待类型分析_数据库_03

解决

表上创建好索引后,该语句的执行时间降低到几百毫秒,CXPACKET等待类型大幅减少,CPU利用率下降到10%以下。

经验

如果您的数据库有大量的CXPACKET等待类型,并且CPU利用率非常高,以下的经验基本可以帮助您解决问题

配置最大并行度(Max Degree of Parallelism)参数,该参数是实例级别的(2016以后版本中可以对单独数据库设置) 。默认是0,对于一个SQL请求,可以使用全部的CPU核数进行并行调度,对于单个SQL请求来说是最好的,但是数据库是有并发的,就会导致其他的请求没有CPU资源,所以要在单个语句的执行时间和整体的并发之间取得一个平衡,对于OLTP系统,建议设置成4或者8,对于OLAP系统,可根据实际的并发请求数适当放大。

创建合适的索引, 一个很简单的语句产生CXPACKET等待,绝大多数原因是没有合适的索引,创建合适索引后,语句会有几倍到几十倍的提升。

​找到高并发的SQL语句分析并行的原因并进行优化,避免并行。

​北京格瑞趋势科技有限公司是聚焦于数据服务的高新技术企业,成立于2008年,创始团队及核心技术人员来自微软和雅虎。微软数据平台金牌合作伙伴,卫宁健康数据平台战略合作伙伴。通过产品+服务双轮驱动的业务模式,14年间累计服务4000+客户,覆盖互联网、市政、交通、电信、医疗、教育、电力、制造业等各个领域。

CXPACKET等待类型分析_SQL_04

标签:语句,CPU,索引,SQL,类型,等待,CXPACKET
From: https://blog.51cto.com/u_15934193/6033518

相关文章

  • 准确判断一个变量的数据类型
    准确判断一个变量的数据类型犹豫typeof无法判断引用数据类型所以需要调用Object.prototype.toString.call上的方法/***获取变量准确类型的函数*@param{*}t......
  • 实战:第十九章:存入Long类型对象,在代码中使用Long类型接收,结果报类型转换错误
    使用雪花算法随机生成的id,使用Long类型存储到redis的时候,反序列化为Object类型,对于数值类型,取出后统一转为Object,导致泛型类型丢失,数值自动转为了Integer类型,rangeofint......
  • 面试题:let const var 的区别 及数据类型
    1.letconstvar的区别答。1var有变量提升,letconst没有2var没有作用域,但是letconst有作用域3varlet声明时可以没有值,但是const声明时必须含有值4var声明......
  • 车牌识别服务-JAVA+ONNX版本,支持全类型的车牌
    1、车牌识别简介车牌识别分为车牌检测与识别,检测模型一般需要检查车牌的位置识别模型一般为识别车牌号及车牌的颜色类型等,目前有较多的深度学习模型能支持,这里就不详细......
  • 标识符、八大类型
      八大类型:整数:int、byte、short、long小数:浮点数float、double字符:char布尔值:boolean ......
  • 【Redis】三大特殊数据类型
    目录Geospatial:地理位置Geospatial:地理位置城市经纬度查询:经纬度查询注意点1:两极无法直接添加,我们一般会下载城市数据,直接通过java程序一次性导入!注意点2:有效的......
  • 【Redis】五大数据类型
    目录String(字符串)添加、查询、追加、获取长度,判断是否存在的操作自增、自减操作截取、替换字符串操作设置过期时间、不存在设置操作mset、mget操作添加获取对象、getset操......
  • java 判断 class 类型
    1.instanceof。用来判断一个对象是否为一个类的实例。2. Class.isInstance3.  Class.isAssignableFrom。判断父类,参数为本身或者其子类。4. Class.isPrimitive。......
  • 类型转换
    类型转换由于Java是强类型语言,所以要进行有些运算的时候,需要用到类型转换。​ 低------------------------------------------------------------>高​ byte,short,......
  • 数据类型
    数据类型强类型语言要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用弱类型语言要求变量的使用要不需要严格符合规定,所有变量都必须先定义后才能使......