db file sequential read:直接路径读;
官方说明如下:
1 This event signifies that the user process is reading a buffer into the SGA buffer cache and is waiting for a physical I/O call to return. A sequential read is a single-block read. 2 3 Single block I/Os are usually the result of using indexes. Rarely, full table scan calls could get truncated to a single block call because of extent boundaries, or buffers present in the buffer cache. These waits would also show up as db file sequential read. 4 5 Check the following V$SESSION_WAIT parameter columns: 6 7 P1: The absolute file number 8 P2: The block being read 9 P3: The number of blocks (should be 1)
解释:ORACLE进程需要访问block不能从SGA中获取的时候,因此oracle进程会等待block从I/O读取到SGA;
一个顺序读是一个单块读,单块I/O一般来自索引读的结果;
db file sequential read等待事件有3个参数:
P1: The absolute file number 文件号
P2: The block being read first block#
P3: The number of blocks (should be 1) block数量
db file sequential read等待时间是由于执行对索引,回滚(undo)段,和表(当借助rowid来访问),控制文件和数据文件头的单块读操作SQL语句(用户和递归)引起的。对于这些对象的物理I/O请求是很正常的,因此db file sequential read等待的存在不是一定意味库或应用出错了。如果会话在这事件上花了好长事件,它可能也不是一个糟糕的事情。相反,如果会话花了大量时间在equeue或latch free上,那么一定是有问题。
db file sequential read等待事件有3个参数:file#,first block#,和block数量。在10g中,这等待事件受到用户I/O等待级别的影响。当处理db file sequential read等待事件的时候,牢记以下关键想法。
Oracle进程需要一个当前不在SGA中的块,等待数据库块从磁盘读入到SGA中
要看的两个重要的数字是单独会话的TIME_WAITED和AVERAGE_WAIT。
重要db file sequential read等待时间最可能是一个应用问题。
AWR报告中的系统的等待事件中的db file sequential read是否合理?
第一个重要参数
db file sequential read的优化方法:
从读取开始,增加SGA中buffer cache的大小,避免每次都从硬盘中去读数;
优化sql语句,减少不必要的块读取;
你能做两件事来最小化db file sequential read事件:
通过降低physical和logical read来优化导致大多数wait的SQL语句
降低平均等待时间