当一个session 是从磁盘直接读取buffer 到PGA(相对从buffer cache在SGA中), 它在这个事件上等待。如果 I/O 子系统不能支持异步I/O, 然后每个等待对应的物理读请求。 如果 I/O 子系统支持异步I/O,那么处理是可以重叠执行读请求和处理blocks 已经存在在PGA里。 当process 尝试访问一个block 在PGA中,没有从磁盘读取, 它然后执行一个等待请求和更新这个事件的统计信息。 因此,等待的数量是和读请求的数量不一样的。 Check the following V$SESSION_WAIT parameter columns: P1 - File_id for the read call 读取的文件id P2 - Start block_id for the read call 读取的启示块 P3 - Number of blocks in the read call 读取的块数 产生的原因: direct path read较高的可能原因有: 1. 大量的磁盘排序操作,order by, group by, union, distinct, rollup, 无法在PGA中完成排序,需要利用temp表空间进行排序。 当从临时表空间中读取排序结果时,会产生direct path read. 2. 大量的Hash Join操作,利用temp表空间保存hash区。 3. SQL语句的并行处理
direct path read
最新推荐文章于 2021-04-07 01:42:06 发布
direct path read是Oracle数据库的一种I/O操作,当session直接从磁盘读取数据到PGA而非通过SGA的buffer cache时会发生。该事件与读请求的数量不同,可能由于磁盘排序、哈希连接、SQL并行执行或大表全表扫描引起。高等待时间可能影响性能,可以通过分析V$SESSION_WAIT、V$ACTIVE_SESSION_HISTORY等视图来定位问题。
摘要由CSDN通过智能技术生成