今日在otn上闲逛,翻到几篇去年的老文章,看到这一篇介绍9i中数据块预读技术的,感觉值得了解(以前竟没注意,惭愧惭愧)。相信大家都知道按index搜索的成本在某些条件下会远远大于全表扫描的原理。在9i里,针对这个问题,oracle专门进行了优化:数据块预读。根据簇化较低(poorly clustered)的二叉数索引选取,当需要搜索出大批的记录时,采用数据块预读使的性能得到了大约30%的提升。由于根据索引依次取的的记录极有可能在不同的数据块中,使用传统的方法,每取一条记录将可能耗去一个io,从而使得搜索变的io bound。而使用数据块预读,oracle将会先从索引中提取出满足条件的多的索引键值,然后才根据这些键值去读取多个表数据块,从而减少了同一表数据块会被多次重读的可能,一定量的减少了IO。
大家如果有兴趣看一下例子,可以参考以下url:
[[The No.1 Link Start.]]
http://otn.oracle.com/products/oracle9i/daily/aug22.html
[[The No.1 Link End.]]