PX Deq: Execution Msg 等待事件

可参考 MOS文档:

WAITEVENT: "PX Deq Credit: send blkd" (Doc ID 271767.1)

P1 = sleeptime/senderid
   P2 = passes
   P3 = qref

这是一个 IDLE wait event,需要查看 谁在等待(也就是那个 sender):

例如:

在某个 Slave 进程的 trace 文件中,出现如下信息:

WAIT #139280095023008: nam=‘PX Deq: reap credit‘ ela= 5 p1=0 p2=0 p3=0 obj#=-1 tim=1022377594644
WAIT #139280095023008: nam=‘PX Deq: reap credit‘ ela= 4 p1=0 p2=0 p3=0 obj#=-1 tim=1022377595160
WAIT #139280095023008: nam=‘PX Deq: Execution Msg‘ ela= 513 sleeptime/senderid=268632063 passes=1 p3=21463455416 obj#=-1 tim=1022455595161

通过 tkprof 整形后出现了这样的信息:

=====================================================================================
Elapsed times include waiting on following events:
Event waited on                             Times   Max. Wait  Total Waited
----------------------------------------   Waited  ----------  ------------
...

PX Deq: reap credit                           271        0.00          0.00
PX Deq: Execution Msg                          10        0.75          3.83
IPC send completion sync                        2        0.00          0.00
PX Deq Credit: send blkd                      102       32.63         94.44
PX Deq Credit: need buffer                      8        0.47          1.78
...
=====================================================================================
 
表明等待 PX Deq Credit: send blkd 事件,共等待了 94.44 秒。

可以执行如下的脚本:

set SERVEROUTPUT on
       undef p1
       declare
           inst   varchar(20);
           sender varchar(20);
       begin
         select bitand(&&p1, 16711680) - 65535 as SNDRINST,
            decode(bitand(&&p1, 65535),65535, ‘QC‘, ‘P‘||to_char(bitand(&&p1, 65535),‘fm000‘) ) as SNDR
            into  inst , sender
         from dual
         where bitand(&&p1, 268435456) = 268435456;
             dbms_output.put_line(‘Instance = ‘||inst);
             dbms_output.put_line(‘Sender = ‘||sender );
       end;
       /

执行时会问 P1值,给出上面的sleeptime/senderid:268632063

经过计算后,得出答案:

Instance = 65537
Sender = QC

而且在任何一台运行Oracle 的机器上都如此。

这表明 :
作为 Coordinator 的 Process 在获取 Slave 进程的数据时,反应太慢了,
导致某些 Slave进行因为 Queue 满而不得不等待,进而拖慢了整个并行执行的速度。

这常常是由于 CPU 数目不足或者 系统中运行的 进程太多导致。可考虑 减小并行度。

时间: 2024-08-07 17:01:05

PX Deq: Execution Msg 等待事件的相关文章

PX Deq: Execution Msg,PX Deq: Execute Reply等待事件

PX Deq: Execution Msg Occurs when a parallel slave is waiting to be told what to do. This is normally considered an idle event, but can cause excessive CPU in some cases. Solution Reduce the degree of parallelism in the query if excessive CPU usage i

详解 db file sequential read 等待事件

db file sequential read (本文由thomaswoo_dba翻译,转载请注明出处) db file sequential read 事件有三个参数:file#,first block#, block count, 在oracle 10g里,此等待事件在归于 User I/O wait class 下面的. 处理db file sequential read 事件要牢牢把握下面三个主要思想: 1)oracle 进程需要访问的block不能从SGA 中获取,因此oracle 进

db file sequential read等待事件 --转载

db file sequential read db file sequential read等待事件有3个参数:file#,first block#,和block数量.在10g中,这等待事件受到用户I/O等待级别的影响.当处理db file sequential read等待事件的时候,牢记以下关键想法. l         Oracle进程需要一个当前不在SGA中的块,等待数据库块从磁盘读入到SGA中 l         要看的两个重要的数字是单独会话的TIME_WAITED和AVERAGE

【等待事件】等待事件系列(5.1)--Enqueue(队列等待)

[等待事件]等待事件系列(5.1)--Enqueue(队列等待)   1  BLOG文档结构图   2  前言部分   2.1  导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~: ① Enqueue队列等待 ② Enq数据字典 ③ enq: AE - lock ④ enq: MR锁 ⑤ enq: DX - contention ⑥ enq: SQ - contention 序列等待     2.2  相关参考文章链接 [推

AWR报告中Top 10 Foreground Events存在”reliable message”等待事件的处理办法

操作系统版本:HP-UNIX B.11.31 数据库版本:11.2.0.4 RAC (一) 问题概要 (1)在AWR报告的Top 10 Foreground Events中发现reliable message占用了较高的DB Time,如下: Top 10 Foreground Events by Total Wait Time~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                               Total      

Oracle Study之--Oracle等待事件(5)

Oracle Study之--Oracle等待事件(5)  Db file single write这个等待事件通常只发生在一种情况下,就是Oracle 更新数据文件头信息时(比如发生Checkpoint).当这个等待事件很明显时,需要考虑是不是数据库中的数据文件数量太大,导致Oracle 需要花较长的时间来做所有文件头的更新操作(checkpoint).这个等待事件有三个参数:File#: 需要更新的数据块所在的数据文件的文件号.Block#: 需要更新的数据块号.Blocks: 需要更新的数

Oracle 常见的33个等待事件

一. 等待事件的相关知识: 1.1 等待事件主要可以分为两类,即空闲(IDLE)等待事件和非空闲(NON-IDLE)等待事件. 1). 空闲等待事件指Oracle正等待某种工作,在诊断和优化数据库的时候,不用过多注意这部分事件. 2). 非空闲等待事件专门针对ORACLE的活动,指数据库任务或应用运行过程中发生的等待,这些等待事件是在调整数据库的时候需要关注与研究的. 在Oracle 10g中的等待事件有872个,11g中等待事件1116个. 我们可以通过v$event_name 视图来查看等待

[转]Oracle 常见的33个等待事件

一. 等待事件的相关知识: 1.1 等待事件主要可以分为两类,即空闲(IDLE)等待事件和非空闲(NON-IDLE)等待事件. 1). 空闲等待事件指ORACLE正等待某种工作,在诊断和优化数据库的时候,不用过多注意这部分事件. 2). 非空闲等待事件专门针对ORACLE的活动,指数据库任务或应用运行过程中发生的等待,这些等待事件是在调整数据库的时候需要关注与研究的. 在Oracle 10g中的等待事件有872个,11g中等待事件1116个. 我们可以通过v$event_name 视图来查看等待

oracle等待事件的相关知识

一. 等待事件的相关知识: 1.1 等待事件主要可以分为两类,即空闲(IDLE)等待事件和非空闲(NON-IDLE)等待事件. 1). 空闲等待事件指ORACLE正等待某种工作,在诊断和优化数据库的时候,不用过多注意这部分事件. 2). 非空闲等待事件专门针对ORACLE的活动,指数据库任务或应用运行过程中发生的等待,这些等待事件是在调整数据库的时候需要关注与研究的. 在Oracle 10g中的等待事件有872个,11g中等待事件1116个. 我们可以通过v$event_name 视图来查看等待