direct path read,direct path/write

来源:互联网 发布:长春工业大学 知乎 编辑:程序博客网 时间:2024/05/13 11:32
direct path read这个等待事件表示Oracle读取数据块直接进入PGA,而非SGA中的Buffer Cache中。

 

SQL> select name,parameter1,parameter2,parameter3,wait_class from v$event_name where name='direct path read';NAME                 PARAMETER1      PARAMETER2 PARAMETER3 WAIT_CLASS-------------------- --------------- ---------- ---------- ------------------------------------------------------direct path read     file number     first dba  block cnt  User I/O


p1:绝对文件号 p2:第一个数据块号 p3:总共读了多少块。

产生这个等待事件的原因大概有以下几种:

1、磁盘排序IO(Sort Area不足时,排序用到的临时数据会被写到临时表空间上去,当读取这些数据时就使用直接读);
2、并行查询;
3、预读取(当一个进程认为某个数据块将很快被用到而发出IO请求时)
4、Hash Join(Hash Area不足)
5、IO负载系统中,服务进程处理缓存的速度比系统IO返回数据到缓存的速度更快时

在OLTP系统中如果该等待事件过于明显,通常的可能是磁盘排序造成的,应该找出在磁盘排序的SQL,对其优化。

 direct path write这个等待事件表示Oracle直接从PGA写入到数据文件/临时文件。

p1:绝对文件号 p2:第一个数据块号 p3:总共读了多少块。

SQL> select name,parameter1,parameter2,parameter3,wait_class from v$event_name where name='direct path write';NAME                 PARAMETER1      PARAMETER2 PARAMETER3 WAIT_CLASS-------------------- --------------- ---------- ---------- ----------------------------------------------------------------direct path write    file number     first dba  block cnt  User I/O


产生这个等待事件的原因大概有以下几种:

1、直接数据载入操作(如CTAS、SQL*Loader设置Direct选项等);
2、并行DML操作;
3、磁盘排序(排序内存空间不足,数据写入磁盘);
4、载入NOCACHE数据段;

0 0