美文网首页
Oracle等待事件之06(Direct path read/w

Oracle等待事件之06(Direct path read/w

作者: 轻飘飘D | 来源:发表于2019-09-26 10:05 被阅读0次
    1. Direct path read
    这个等待事件发生在会话将数据块直接读取到PGA当中而不是SGA中的情况,这些被读取的数据通常是这个会话私有的数据,
    所以不需要放到SGA作为共享数据,因为这样做没有意义。这些数据通常是来自于临时段上的数据,比如一个会话中SQL的排序数据,
    并行执行过程中间产生的数据,以及Hash Join,merge join产生的排序数据,因为这些数据只对当前的会话的SQL操作有意义,
    所以不需要放到SGA当中。
    当发生direct path read等待事件时,意味着磁盘上有大量的临时数据产生,比如排序,
    并行执行等操作。或者意味着PGA中空闲空间不足。
    这个等待事件有三个参数:
    Descriptor address:  一个指针,指向当前会话正在等待的一个direct read I/O。
    First dba: descriptor address 中最旧的一个I/O数据块地址。
    Block cnt: descriptor address上下文中涉及的有效的buffer 数量。
    
    1. Direct path write
    这个等待事件和direct path read 正好相反,是会话将一些数据从PGA中直接写入到磁盘文件上,而不经过SGA。
    这种情况通常发生在:
    使用临时表空间排序(内存不足)
    数据的直接加载(使用append方式加载数据)
    并行DML操作。
    这个等待事件有三个参数:
    Descriptor address: 一个指针,指向当前会话正在等待的一个direct I/O.
    First dba: descriptor address 中最旧的一个I/O数据块地址。
    Block cnt: descriptor address 上下文中涉及的有效地 buffer 数量。
    
    1. 案例
    SQL> select event,TOTAL_WAITS,AVERAGE_WAIT from v$system_event where upper(event) like 'DIRECT%';
    EVENT                   TOTAL_WAITS  AVERAGE_WAIT  
    direct path sync        4            0.23          
    direct path read        1            1.41          
    direct path write       70           0.04          
    direct path write temp  1            0.01  
    
    SQL> select * from t4 order by 1;
    1       MAAAAAAAA  
        ...
    100000  MAAAAAAAA 
    
    SQL> select event,TOTAL_WAITS,AVERAGE_WAIT from v$system_event where upper(event) like 'DIRECT%';
    EVENT                   TOTAL_WAITS  AVERAGE_WAIT  
    direct path sync        4            0.23          
    direct path read        1            1.41          
    direct path write       70           0.04          
    direct path write temp  1            0.01 
    

    相关文章

      网友评论

          本文标题:Oracle等待事件之06(Direct path read/w

          本文链接:https://www.haomeiwen.com/subject/obpnyctx.html