db file sequential read 翻译成中文叫数据文件顺序读。是众多oracle 文件读取等待事件的一种。
主要是Oracle 进程需要一个当前不在SGA中的块,它正在等待数据库从磁盘读入SGA。核心点是理解 这个等待事件常常发生在单块读上。然后就很容易总结成 oracle 数据库在那些情绪下会发生单块读:
1,执行计划走索引,比如 index full scan , index unique scan,table access by index rowid 等走索引都是单块读,都可能会发生db file sequential read
2.由于一致性读CR的需求 对undo block的扫描也可能造成FULL TABLE SCAN时大量db file sequential read
3.回表过多,行链接,行迁移严重,索引碎片clustering_factor过大问题也有可能db file sequential read
4.回滚(或撤消)段和表(通过 rowid 访问时),控制文件和数据文件头也有可能db file sequential read
5.如果这个等待事件比较显著,可能表示在多表连接中表的连接顺序存在问题,可能没有正确的使用驱动表;或者选择错误的索引进行关联
总体而已db file sequential read 一般是走索引导致的。很多情况下这个等待的问题不是很严重.上面的2到5条一般不会是问题的主要原因(也不排除是上面的原因,可以用下面sql查询分析)。
awr里面如果db file sequential read 在top5 里面 也从侧面说明这个库的sql 整体走索引比较多
db file sequential read等待事