+++++++ 条带大小与block size以及db_file_multiblock_read_count 的关系

首先我们来温习下db_file_multiblock_read_count参数,该参数我想都比较熟悉了,不多说。

db_file_multiblock_read_count:

关于这个参数,不用多说了,是指oracle多块读所能读取的最大block数(主要针对full scan,例如table full scan,index full scan),理论上有这么一个关系:
 
db_file_multiblock_read_count=(max io szie)/block_size ,当然这里的max io size是受限于操作
系统的,另外据我所知,目前db_file_multiblock_read_count参数,oracle所支持的最大值也就是128.
 
另外需要说明一点的是,从10gR2开始,该参数已经是自动调节了。
SQL> SELECT * FROM v$version WHERE rownum < 2;
 
BANNER
--------------------------------------------------------------------------------
Oracle DATABASE 11g Enterprise Edition Release 11.2.0.2.0 - Production
 
SQL> SHOW parameter multiblock
 
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
_hash_multiblock_io_count            INTEGER     0
_sort_multiblock_read_count          INTEGER     2
db_file_multiblock_read_count        INTEGER     54

可以看到,我这里11gR2环境中,参数自动调整后为54,是一个比较大的值了。

block_size:

关于block size,是指定义数据库中数据块的大小,9i之前每个数据库只能有一个block size。从9i开始支持一个库中存在多种
block_size的情况。当然,我们这里不是来讨论block_size定义的,我是来说明下,我们如何来选择适合自己系统的block_size?
 
在oracle 的performance tunning 手册里面,是这样描述的:
 
针对读操作:
 
 1) 如果rows are small且数据库access方式主要是随机操作,那么推荐使用smaller block size;
 2) 如果rows are small且数据库access方式主要是顺序读,那么推荐使用smaller block size;
 3) 如果rows are small且数据库access方式主要是随机和顺序操作,那么推荐使用large block size;
 4) 如果rows are large,比如包含log 数据,那么推荐使用large block size。
 
全文请参考原文链接地址: stripe /block size/db_file_multiblock_read_count
posted on 2012-09-01 23:25  Roger's oracle blog  阅读(282)  评论(0编辑  收藏  举报