1. DB File Sequential Read
1.1.
发生场景:
当一个进程需要从磁盘中读取数据块到数据库的缓冲区时,就会产生“
DB File Sequential
Read”
。
最常见的情况有执行索引的访问(除
IFFS
外的方式),回滚操作,以
ROWID
的方式访
问表中的数据,重建控制文件,对文件头做
DUMP
等。这里的
sequential
也并非指的是
Oracle
按顺序的方式来访问数据,和
db file scattered read
一样,它指的是读取的数据块在内
存中是以连续的方式存放的。
这个等待事件有三个参数:
File#
: 要读取的数据块锁在数据文件的文件号。
Block#
: 要读取的起始数据块号。
Blocks
:要读取的数据块数目(这里应该等于
1
)。
1.2.
工作原理:
此事件表示读取数据块的过程是顺序的,即一次读取一个块。
通常,这涉及到快速的单块
I/O
操作,因为索引结构设计为提供快速的数据访问路径。
1.3.
可能原因:
(1)
磁盘
I/O
性能: 如果磁盘
I/O
速度慢,这个等待事件的时间会增加。
(2)
索引设计: 索引可能不是最优的,或者没有被查询有效利用。
(3)
数据分布: 数据可能在磁盘上分布不均匀,导致访问某些数据时
I/O
需求增加。
(4)
缓存命中率低: 如果所需的数据块不在数据库缓冲区中,就需要从磁盘读取,增加了
I/O
操作。
文档被以下合辑收录
评论