1. oracle等待事件
1) 分类
主要分为两大类:空闲(idle)等待事件和非空闲(non-idle)等待事件,在会话级别可以在视图V$SESSION_WAIT中查看当前等待的时间。
2) 空闲事件
空闲事件指oracle正等待某种工作,不用过多关注。
常见的空闲等待事件:dispatcher timer,pipe get,slave wait,
sql net message from/to client,sql net more data to client
3) 非空闲等待事件
常见的空闲等待事件:
a) db file scattered read:文件分散多块读取
这个事件表明用户进程正在一次I/O读多块数据到Buffer Cache中,等待直到I/O调用返回,通常显示与全表扫描(full table scan / FTS)相关或者IFFS (index fast full scan) 快速索引全扫描(把索引链切割成很多份,多块并行读取)的等待,当全表扫描时,基于性能的考虑,数据会多块读取分散(scattered)读入buffer cache,出现该事件并不一定就表示存在性能问题,但如果该事件的等待的时间太长,就要仔细查看了。
b) db file sequential read
单个数据块/索引块读取到连续的内存中时会发生,常见于存在索引的情况下,可能存在多表连接,表的连接顺序有问题,没有正确使用驱动表,或者存在不适合的索引,同样的,出现该事件并不一定就表示存在性能问题,但如果该事件的等待的时间太长,就要仔细查看了。