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

2019-09-26  本文已影响0人  轻飘飘D
  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 
上一篇下一篇

猜你喜欢

热点阅读