sequential read(顺序读)一般发生在index range scan中,也被称为单块读,scattered read(离散读)一般发生在FTS中,也被称为多块读。对于sequential和scattered这两个词的含义,往往会造成一些困惑。因为从IO的角度去看,sequential read因为是单块读,在IO子系统上是离散读。而scattered read因为是多块读,在IO子系统上是顺序读。
因为所谓的sequential和scattered是从Oracle的角度去看,而不是从IO子系统的角度去看。sequential的含义是指Oracle请求IO是顺序的,比如index range scan,就必须是先读root,再读branch,然后读leaf,最后读data block,这个过程是顺序,串行和同步的。而scattered read是指Oracle请求IO是离散的,比如在做FTS时,可以向操作系统同时请求多个IO,而且不必等到返回,就可以请求下一个IO,所以是异步的过程。所以我说scattered read是局部并行,全局串行的过程。
Oracle的顺序读在IO子系统上是离散的,而Oracle的离散度在IO子系统上是连续的,之所以这么命名是因为Oracle和IO子系统站在自己的角度观察的结果。
-EOF-