about FTS(Full Table Scan) V db file scattered read&db file sequential read

我们知道全表扫描的时候执行的是多块扫描I/O,一次I/O多块读取块数取决于db_file_multiblock_read_count,每次多块读取的时候都要等到物理I/O结束(关于这个参数,针对不同OS和环境有不通的默认值,要知道所在环境可以设置最大的值是多少,设置一个超大的数字,oracle会设置成允许的最大值)这时候出现了db file scattered read等待事件。


那么会出现db file sequential read吗?答案是会的,它在FTS中是会出现的:
0 达到区界线
假设一次Multi Block I/O读取8个块,如果一个区有9个块,那么读取这个区的时候,剩下的一个块就是Single Block I/O读取,也就带来了db file sequential read和它的等到事件
1 读取缓存的块
如读取8个块是,第3个块被缓存,那么前2个块通过Multi Block I/O,第3个块是一次Logical I/O,剩下的5个块Multi Block I/O。这是多次I/O。
2 行链接
在执行FTS过程中,如果发现行链接,oracle为了读取剩下的行引起的附件I/O,执行的是Single Block I/O。btw行链接无法避免,行迁移可以消除。
-The End-

你可能感兴趣的:(about FTS(Full Table Scan) V db file scattered read&db file sequential read)