Oracle db_file_mulitblock_read_count参数详解

Oracle DB_FILE_MULTIBLOCK_READ_COUNT是Oracle比较重要的一个全局性参数,可以影响系统级别及sessioin级别。主要是用于设置最小

oracle db_file_multiblock_read_count是oracle比较重要的一个全局性参数,可以影响系统级别及sessioin级别。主要是用于设置最小化表扫描时oracle一次按顺序能够读取的数据块数。通常情况下,我们看到top events中的等待事件db file scattered read时会考虑到增加该参数的值。但是否增加了db_file_multiblock_read_count的值就一定可以减少db file scattered read? 本文描述了db_file_multiblock_read_count的设置并给出演示。

1、参数DB_FILE_MULTIBLOCK_READ_COUNT(MBRC)
      参数DB_FILE_MULTIBLOCK_READ_COUNT简写为(MBRC)。
      该参数是最小化表扫描的重要参数,用于指定Oracle一次按顺序能够读取的数据块数。理论上该值越大则能够读取的数据块越多。
      实现全表扫描,索引全扫描及索引快速扫描所需的I/O总数取决于该参数,以及表自身的大小,是否使用并行等等。
      Oracle 10gR2以后会根据相应的操作系统及buffer cache以最优化的方式来自动设定该参数的值。通常情况下该值为1MB/db_block_size。
      在最大I/O为1MB的情况下,block的大小为8KB,则参数的值为128。如果在最大I/O为64KB,block为8KB,则参数的值为8。
      对于OLTP和batch环境该参数的值为4到16,DSS环境应设置大于16以上或大的值。
      该参数的变化对数据库性能产生整体性的影响,过大的设置会导致大量SQL访问路径发生变化,如原先的索引扫描倾向于使用全表扫描。
      按照Oracle的建议在10g R2之后尽可能使用oracle自动设置的值。

2、参数DB_FILE_MULTIBLOCK_READ_COUNT与SSTIOMAX
    In Release 9.2 and above; follow the explanation below:
 
    Each version of Oracle on each port, is shipped with a preset maximum of how much data can be transferred in a single read (which of course is equivalent to the db_file_multiblock_read_count since the block size is fixed).
    For 8i and above (on most platforms) this is 1Mb and is referred to as SSTIOMAX.
    To determine it for your port and Oracle version, simply set db_file_multiblock_read_count to a nonsensical value and Oracle will size it down for you.
 
    从上面的描述可知,Oracle 9.2之后,有一个名叫SSTIOMAX的东东,限制了MBRC的设置。
    由于SSTIOMAX大多数平台最大单次I/O为1MB,,db_block_size为8kb,因此MBRC参数的最大值通常为128。128*8kb=1mb。
    对于设置大于1MB的情形,即MBRC*db_block_size>SSTIOMAX的情形,则设置的值并不生效,而是使用符合SSTIOMAX的最大MBRC值。

3、如何计算MBRC
    The formula as internally used is as below:
        db_file_multiblock_read_count = min(1048576/db_block_size , db_cache_size/(sessions * db_block_size))
 
    Without WORKLOAD stats, CBO computes multiblock reads as:
          io_cost = blocks/(1.6765 * power(db_file_multiblock_read_count,0.6581))
 
    With WORKLOAD stats, then:
          io_cost = blocks/mbrc * mreadtim/sreadtim
 
    下面是不同情形设置所致的最大i/o
        db_blocks_size      tablespace block size      db_file_multiblock_read_count  max_fetch_blocks_in_single_read
    —————    ———————-    —————————–  ——————————-
    8k                  8k                        32                              8*32=256kb(i/o)
    8k                  4k                        32                              8*32/4=64kb(i/o)
    8k                  8k                        not explicitly set              determined by OS and db_cache_size
    8k                  8k                        >128                            8*128=1MB(i/o)

4、哪些情形导致单次多块读少于预设置
    a、读段头时单块读(此情形显而易见,通常一个extent包含一个段头header)
    b、物理读不能跨越多个区(extent)
    c、部分数据块已经位于高速缓存则不会从I/O子系统再次读取,除非是直接读(direct path read)。

5、演示不同值的MBRC单次读的block(system级别)

a、MBRC为16的情形
–演示环境
sys@SYBO2SZ> ho cat /etc/issue

Welcome to SUSE Linux Enterprise Server 10 SP3 (x86_64) – Kernel (l).

sys@SYBO2SZ> select * from v$version where rownum=1;

BANNER
—————————————————————-
Oracle Database 10g Release 10.2.0.3.0 – 64bit Production

–Author: Robinson

–查看MBRC的值
sys@SYBO2SZ> show parameter read_count;

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/1889495.html

(0)
上一篇 2025年2月22日 12:56:32
下一篇 2025年2月22日 12:56:48

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 从参数取值看Oracle OMF特性

    Oracle 10g以后,在目录结构和文件管理方面推出两个特性OFA和OMF。OFA(Oracle Flexiable Architecture)是进行目录结构约束规范 oracle 10g以后,在目录结构和文件管理方面推出两个特性ofa和…

    数据库 2025年2月23日
    200
  • Oracle存储结构之参数文件

    Oracle的参数文件非常之多,但最重要的当属数据库参数文件。而数据库参数文件有pfile和spfile两类。pfile需手动修改,是文本文件 Oracle的参数文件非常之多,但最重要的当属数据库参数文件。而数据库参数文件有pfile和sp…

    数据库 2025年2月22日
    200
  • Oracle参数及参数文件spfile/pfile详解

    Oracle参数及参数文件spfile/pfile详解,关于glogin.sql脚本的说明在启动sqlplus 时,会自动调用$ORACLE_HOME/sqlplus/admin/glo 1、参数文件v$parametersql> d…

    数据库 2025年2月22日
    200
  • Oracle sqlplus prelim 参数介绍

    从Oracle10g开始,sqlplus提供了一个参数选项-prelim,用这个参数,在系统已经hang的时候。我们可以连接到SGA而不是数据库,也就 从Oracle10g开始,sqlplus提供了一个参数选项-prelim,用这个参数,在…

    数据库 2025年2月22日
    200
  • Linux中与Oracle相关的参数

    在安装oracle 11g中,下面的参数值要在linux中指定,挑选其中的三个来说明一下。其余的由于暂时遇不到,所以先不写了。 在安装oracle 11g中,下面的参数值要在linux中指定,挑选其中的三个来说明一下。其余的由于暂时遇不到,…

    数据库 2025年2月22日
    200
  • Linux 下 Oracle 内核参数优化

    数据库的性能优化涉及到整个数据库运行环境的方方面面,诸如操作系统,Oracle自身,存储,网络等等几个大块。而操作系统则是Orac 数据库的性能优化涉及到整个数据库运行环境的方方面面,诸如操作系统,oracle自身,存储,网络等等几个大块。…

    数据库 2025年2月22日
    200
  • Oracle 数据块优化参数

    Oracle自动管理块空闲空间的条件:当一个插入或者更新操作的行在一个数据块中有足够空闲空间,并且这个空闲空间碎片状态,无法满   用于数据块优化的两个参数:pctfree和pctused一般都是用在oltp系统当中。两者并没有相互的关系,…

    数据库 2025年2月22日
    300
  • Oracle 并行相关的初始化参数

    Oracle数据库并行操作,特别是在RAC环境,一定程度上能够提升数据库的性能,所以对相关的初始化参数的了解是必要的,这篇文章将根 oracle数据库并行操作,特别是在rac环境,一定程度上能够提升数据库的性能,所以对相关的初始化参数的了解…

    数据库 2025年2月22日
    200
  • Oracle之参数文件探究

    说到oracle参数文件,那么这是要给非常重要的文件,在数据库启动实例的过程中进行内存、数据库名称等等环境的初始化,只有参数文 之前有很多刚刚开始学习数据库的朋友经常问我参数文件备份恢复以及误操作导致无法启动实例等等问题,我也是一个求道之人…

    数据库 2025年2月22日
    200
  • Oracle Table 创建参数说明

    先看一个oracle 10g 下table 创建SQL,都是默认值: 先看一个oracle 10g 下table 创建sql,都是默认值:create table sys.qs(username  varchar2(30 byte)    …

    数据库 2025年2月22日
    200

发表回复

登录后才能评论