该等待事件我在前面分析过,但是这次和上次产生的原因有些不一样,上次该等待事件的详细分析链接是:http://blog.sina.com.cn/s/blog_61cd89f60102eeen.html ,本次原理和上次是一样的,但是引起的原因很典型,记录一下排查过程。

结合发生的时间点,从上图我们可以看出,此时数据库负载相对较高,我们年看load profile部分情况

从load profile模块来看,数据库解析比较严重,并且事务数和每秒登陆次数明显有异常,但是我们还需要结合TOP 5等待事件来看数据库在等什么?

     从TOP 5我们可以看到,数据库发生了严重的并行等待,PX Deq Credit :send blkd的原理是:

1.有大量的不同进程之间的数据和信息的交互导致等待,原因可能是一个比较糟糕的执行计划用于了并行执行。
2.等待是由于资源的问题,如CPU或相互连接等。例如CPU利用率达到100%,进程达到了CPU的限制,而不能足够

快地发送数据。
3.由于并行查询hang住,如等待事件为"PX Deq Credit: need buffer"。

说明: Deq = DEQUEUE,这是一个关于出队的等待;  PX等待事件发生在并行查询的不同进程之间交互数据或信息时。 这些等待事件在系统负载很轻的时候,大都是没问题的,但是当系统的负载很重,此类等待事件已经进入top5等待事件中那就需要注意了。

结合该等待事件的原理我们进行排除,因为本案例中数据库服务器CPU使用率不高,并且没有出现"PX Deq Credit: need buffer"。 等待事件,那么我们可以排除第2、3两条,原因只有是第1条了,并行执行并且是糟糕的执行计划,我们先来看看TOP SQL是什么SQL然后再去分析执行计划


    第一条SQL原因已经排除,我们重点关注标红部分,该SQL在这个时间点执行6697次多少有些异常,我们仔细分析一下SQL:

SELECT T.ID,
       T.DEPTID,
       T.DEPTNAMETYPE,
       T.STARTDATE,
       T.ENDDATE,
       T.SUBPROCSSINSTID
  FROM T_REPORT_REALTIME_ITEM T
 WHERE T.GLOBLASN = :B1
 ORDER BY T.SUBPROCSSINSTID, T.STARTDATE, T.ENDDATE
    可以看出,该SQL其实是很简单的一条SQL,也没有hint使用parallel并行,但是问题到底出在那里呢?因为上次案例中是统计信息收集时我使用了degree属性导致的,这时我突想到索引创建时也可以使用parallel索引, 并且在网上看到过因索引degree引发的故障,下面来确认一下

select table_name, index_name, index_type, degree, partitioned, status
  from dba_indexes
 where table_name = 'T_REPORT_REALTIME_ITEM'
   and degree > 2
     结果还真是,该表中有五个索引使用了parallel方法进行索引创建,并且创建完成以后并没有将degree改为1,而且该表查询次数较多,导致数据库中产生严重的:PX Deq Credit :send blkd等待事件


     该类等待事件处理方法也很简单,将索引degree改为1即可,具体操作方法是:

alter index index_name noparallel;
     原因找到了,发给项目组让开发的同事在创建索引时注意此事项,并进行修改就可以了!

http://blog.sina.com.cn/s/blog_61cd89f60102ef1p.html

AWR实战分析之---- PX Deq Credit: send blkd (转载)的更多相关文章

  1. AWR实战分析之----direct path read temp

    http://blog.sina.com.cn/s/blog_61cd89f60102eej1.html 1.direct path read temp select TOTAL_BLOCKS,USE ...

  2. PX Deq: Execution Msg 等待事件

    可参考 MOS文档: WAITEVENT: "PX Deq Credit: send blkd" (Doc ID 271767.1) P1 = sleeptime/senderid ...

  3. 理论实践:循序渐进理解AWR细致入微分析性能报告

    1. AWR 概述 Automatic Workload Repository(AWR) 是10g引入的一个重要组件.在里面存贮着近期一段时间内(默认是7天)数据库活动状态的详细信息. AWR 报告是 ...

  4. (转)【深度长文】循序渐进解读Oracle AWR性能分析报告

    原文:https://dbaplus.cn/news-10-734-1.html https://blog.csdn.net/defonds/article/details/52958303 作者介绍 ...

  5. elk实战分析nginx日志文档

    elk实战分析nginx日志文档 架构: kibana <--- es-cluster <--- logstash <--- filebeat 环境准备:192.168.3.1 no ...

  6. 实战分析: MySQL字符集

    原创: 吴炳锡 MySQLBeginner 实战分析: MySQL字符集说明 在本文中讨论以下几个问题: 1. GBK和UTF8占用几个字节 2. ASCII码在不同字符集中占用几个字节 3. MyS ...

  7. Java互联网架构-Mysql分库分表订单生成系统实战分析

    概述 分库分表的必要性 首先我们来了解一下为什么要做分库分表.在我们的业务(web应用)中,关系型数据库本身比较容易成为系统性能瓶颈,单机存储容量.连接数.处理能力等都很有限,数据库本身的“有状态性” ...

  8. AWR报告分析

    AWR报告分析 awr报告是oracle 10g下提供的一种性能收集和分析工具,它能提供一个时间段内整个系统资源使用情况的报告,通过这个报告,我们就可以了解一个系统的整个运行情况,这就像一个人全面的体 ...

  9. JVisualVM简介与内存泄漏实战分析

    JVisualVM简介与内存泄漏实战分析 学习了:https://blog.csdn.net/kl28978113/article/details/53817827

随机推荐

  1. linux 优化git操作速度

    修改 ssh配置:useDNS:no

  2. CKPT,SCN

    CKPT进程:完全检查点 ckpt进程的作用,触发全局检查点,通过DBWR将buffer_cache中的所有脏块写入数据文件中:由于DBWR的机制,因此lgwr会先写,然后dbwr后写. 当完全检查点 ...

  3. 【机器学习算法】bagging算法

    参考 1.AdaBoost从原理到实现: 完

  4. top command-linux下用top命令查看cpu利用率超过100%

    1.  这里显示的所有的cpu加起来的使用率,说明你的CPU是多核,你运行top后按大键盘1看看,可以显示每个cpu的使用率,top里显示的是把所有使用率加起来;    2.查看CPU信息; cat ...

  5. socket套接字和驱动绑定分析

    1. socket()系统调用 socket系统调用是哪个:socket()有3个参数,因此搜索SYSCALL_DEFINE3,然后在检索socket即可. SYSCALL_DEFINE3(socke ...

  6. jsfl读取xml,图片,并生成swf

    var newdoc = fl.createDocument(); var doc = fl.getDocumentDOM(); var URI = fl.browseForFolderURL(&qu ...

  7. ORTP&&RTSP

    ortp为了提高实时性使用UDP发送 rtsp建立了一个TCPserver,等待客户端连接,此时打开VLC播放器-->打开网络串流-->输入rtsp地址,会请求RTSP Server建立一 ...

  8. Oracle RAC Failover 详解

    Oracle  RAC 同时具备HA(High Availiablity) 和LB(LoadBalance). 而其高可用性的基础就是Failover(故障转移). 它指集群中任何一个节点的故障都不会 ...

  9. spring cloud 之 Eureka 知识点

    Eureka原理 当服务消费者想要调用服务提供者的API时,首先会在注册中心中查询当前可用的实例的网络地址(也可能是定时查询可用实例,本地缓存好可用服务列表),然后再使用客户端负载均衡,命中到其中一个 ...

  10. JSP中的MVC

    如下图