ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Block Prefetching含义

Block Prefetching含义

原创 Linux操作系统 作者:yezhibin 时间:2009-11-11 13:18:32 0 删除 编辑
       以下是翻译Christian Antognini的《Troubleshooting Oracle Performance》P422,关于block prefetching介绍:

       在正常情况下,每个基于单个数据块的处理(如rowid访问和Index range scan),如果缓存中不存在该数据块,将导致单个数据块的物理读操作。对于Nested Loop关联来说,特别是进行多行处理,单数据块物理读将变得没有效率。事实上,通常NL关联通过多个单数据块物理读来访问多个连续的数据块。

       为了有效提高NL关联,数据库引擎利用block prefetching,优化器目标是用一个多数据块物理读来替代多个单数据块物理读,多数据块物理读不单单针对表,也针对索引。

        查看访问路径我们无法获知数据库引擎是否使用prefetching,只能从server进程执行物理读来窥探,特别是等待事件中相关信息:

       1、db file senquential read 事件,对应是单数据块物理读,如果发生该等待事件,表示block prefetching没有被使用,或者是所需的数据块已经在缓存中。

       2、db file scattered read事件,对应是多数据块物理读,因此,如果发生ROWID访问或Index Range Scan,意味着blcok prefetching被使用。

      非常重要一点是,我们无法控制block prefetching的使用,只能是数据库引擎决定是否使用block prefetching。

  注: 参看metalink 406966.1介绍,table prefetching 可能导致错误的结果。


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/354732/viewspace-619397/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: joins类型名词
请登录后发表评论 登录
全部评论

注册时间:2008-12-18

  • 博文量
    159
  • 访问量
    559681