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

全表扫描中的I/O读取
本文探讨了全表扫描(FTS)过程中的多块与单块I/O读取机制,解释了db_file_multiblock_read_count参数的作用及dbfilescatteredread与dbfilesequentialread等待事件出现的原因。

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

<!--more-->


那么会出现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-

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值