Oracle 等待事件之 db file sequential read
db file sequential read:
官网解释:
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.
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
.
Check the following V$SESSION_WAIT
parameter columns:
P1
: The absolute file numberP2
: The block being readP3
: The number of blocks (should be 1)
On a healthy system, physical read waits should be the biggest waits after the idle waits. However, also consider whether there are db
file
sequential
reads
on a large data warehouse that should be seeing mostly full table scans with parallel query.
Figure 10-1 depicts the differences between the following wait events:
db
file
sequential
read
(single block read into one SGA buffer)db
file
scattered
read
(multiblock read into many discontinuous SGA buffers)direct
read
(single or multiblock read into the PGA, bypassing the SGA)
Figure 10-1 Scattered Read, Sequential Read, and Direct Path Read
解释:
db sequential read 此事件表示用户进程正在将缓冲区读入SGA缓冲区高速缓存并正在等待物理I / O调用返回。 顺序读取是单块读取。
单块I / O通常是使用索引的结果。
全表扫描调用可能会因缓冲区高速缓存存在的范围边界或缓冲区而被截断的单块调用。 这些等待也将显示为db file sequential read。
db file sequential read的优化方法:
从读取开始,增加SGA中buffer cache的大小,避免每次都从硬盘中去读数;
优化sql语句,减少不必要的块读取;