1. db file scattered read-DB 文件分散读取
这种情况通常显示与全表扫描相关的等待。
当数据库进行全表扫时,基于性能的考虑,数据会分散(scattered)读入Buffer Cache。如果这个等待事件比较显著,可能说明对于某些全表扫描的表,没有创建索引或者没有创建合适的索引,我们可能需要检查这些数据表已确定是否进行了正确的设置。
然而这个等待事件不一定意味着性能低下,在某些条件下Oracle 会主动使用全表扫描来替换索引扫描以提高性能,这和访问的数据量有关,在CBO 下Oracle 会进行更为智能的选择,在RBO 下Oracle 更倾向于使用索引。
因为全表扫描被置于LRU(Least Recently Used,最近最少适用)列表的冷端(cold end),对于频繁访问的较小的数据表,可以选择把他们Cache 到内存中,以避免反复读取。
当这个等待事件比较显著时,可以结合v$session_longops 动态性能视图来进行诊断,该视图中记录了长时间(运行时间超过6 秒的)运行的事物,可能很多是全表扫描操作(不管怎样,这部分信息都是值得我们注意的)。
2. db file sequential read-DB 文件顺序读取。
这一事件通常显示与单个数据块相关的读取操作(如索引读取)。
如果这个等待事件比较显著,可能表示在多表连接中,表的连接顺序存在问题,可能没有正确的使用驱动表;或者可能说明不加选择地进行索引。
在
大多数情况下我们说,通过索引可以更为快速的获取记录,所以对于一个编码规范、调整良好的数据库,这个等待很大是很正常的。但是在很多情况下,使用索引并
不是最佳的选择,比如读取较大表中大量的数据,全表扫描可能会明显快于索引扫描,所以在开发中我们就应该注意,对于这样的查询应该进行避免使用索引扫描。
db file scattered read一般是在一次性读取多个连续的BLOCK的时候,产生的等待事件。很多网友喜欢把这个事件和全表扫描划等
号,这其实是不全面的。全表扫描一般来说会产生db file scattered read,但是全索引扫描,索引范围扫描也会产生
db file scattered read。db file sequential read是数据库中最常见的等待事件,一个状态良好的系统,这个
等待应该占比较高的比重,排在所有等待事件的第一位(没有什么业务的系统可能除外)。
分享到:
相关推荐
db file sequential read(ms) log file parallel write(ms) log file sync(ms) db file scattered read(ms) #IO WorkLoad Oracle IOPS Oracle MBPS db file sequential read db file scattered read log file ...
常见的非空闲等待事件包括 db file scattered read、db file sequential read、buffer busy waits、free buffer waits、enqueue、latch free、log file parallel write、log file sync 等。 1. db file scattered ...
"Oracle等待事件说明一"主要关注了几个关键的等待事件,包括"buffer busy waits"、"db file parallel write"、"db file single write"、"db file scattered read"、"db file sequential read"以及"direct path write...
一些常见的非空闲等待事件有 db file scattered read、db file sequential read、buffer busy waits、free buffer waits、enqueue、latch free、log file parallel write、log file sync 等。 db file scattered ...
db file scattered read和db file sequential read涉及到I/O操作,可能需要优化表空间的I/O结构;latch free与内部锁竞争有关,可能需要检查锁的使用情况。 在AIX系统层面,`iostat`命令显示了磁盘I/O性能,其中%tm...
当“db file sequential read”和“db file scattered read”等读操作进入等待事件的前五名时,通常表示存在缓冲区忙等待问题。例如,以下STATSPACK报告片段显示了这些等待事件: ``` % 总和事件 等待 时间(s) 消逝...
12. 用户 I/O 类:由用户 I/O 操作引起,如 db file sequential read。 对于特定的等待事件,例如 db file scattered read,它通常与全表扫描相关。在进行全表扫描时,数据会分散读入 buffer cache。高频率的 db ...
非空闲等待事件,如buffer busy waits、db file scattered read、db file sequential read等,通常揭示了系统中的竞争和资源冲突,需要通过深入分析来解决。 针对I/O统计的诊断,可以使用SQL查询来获取表空间、...
通过识别消耗时间最多的事件,如`db file sequential read`和`db file scattered read`,可以定位性能瓶颈并采取相应措施进行优化。 综上所述,Oracle数据库性能优化涉及到多个层面,包括存储硬件、操作系统配置、...
IO等待事件,如db file scattered read和db file sequential read,直接影响数据的读写速度,优化I/O子系统和使用合适的数据访问模式至关重要。 在资源层面,CPU、内存和I/O是性能优化的重点。CPU资源的监控包括...
数据库性能分析显示,主要的性能瓶颈在于用户I/O,尤其是db file sequential read和db file scattered read事件,以及enq: TX - row lock contention,这些都可能导致新Session无法启动或需要更多内存来处理更多的...
db file sequential read 与 db file scattered read 等待的差别是什么?如果以上等待比较多,证明了什么问题?答案是:db file sequential read 是 DB 文件顺序读取,通常显示与单个数据块相关的读取操作(如索引...
- **Db file sequential read / scattered read**:这些等待事件通常涉及顺序读取和散列读取操作。优化索引使用,减少全表扫描,或者提升硬件性能(如磁盘I/O速度)有助于缓解。 - **Direct path read**:这是...
- **db file scattered read**:表示数据库服务器进程读取多个数据块时发生的等待事件。 - **db file sequential read**:表示顺序读取数据文件中的数据块时发生的等待事件。 - **db file parallel read**:在并行...
#### 八、DB File Sequential Read与DB File Scattered Read的区别 **知识点:** - **DB File Sequential Read:** - 表示对单个数据块的顺序读取操作。 - 如索引读取。 - 过多的此类等待可能意味着连接顺序不...
数据库层面,TOP5事件显示主要瓶颈在于磁盘I/O,特别是db file sequential read和db file scattered read操作。此外,数据库最大Process数和高峰期Session数接近,可能导致新Session无法启动,需要更大的内存余量以...
单块读(single block read)对应等待事件“db file sequential read”,而多块读(multi-blocks-read)对应“db file scattered read”,多块读的数量由参数DB_FILE_MULTIBLOCK_READ_COUNT设定。 最后,Oracle使用...
- **db file scattered read**: 1,172,898 - **CPU time**: 3,796 - **db file sequential read**: 395,171 - **buffer busy waits**: 272,977 - **log file sync**: 27,338 以上是针对“STATSPACK report”...