这是杂货铺的第403篇文章
《大表删除字段为何慢?》的案例中,提到删除一张大表的字段,产生了很多等待,但是测试环境模拟的现象,看起来和生产,略有区别。
由于生产环境,用的是DG架构,因此在数据库同事的协助下,利用DG备库snapshot的功能,在生产环境,真实操作了一次,虽然和主库操作,唯一不同的是,没有请求的压力,相当于停了应用,但还是能说明些问题。
整个删除操作,执行时间,大约是30分钟,通过10046的trace,看见等待事件,主要是下面这种,
从这段内容中,有几点值得说明,
1. db file scattered read
Oracle在执行全表扫描(Full Table Scan,FTS)或全索引扫描(Index Full San)时,为保障性能,尽量一次读取多个块,这称为Multi Block I/O,即多块读。每次执行Multi Block I/O,都会等待物理I/O结束,此时等待的,就是db file scattered read事件。这个等待事件包含三个参数&