关于参数DB_FILE_MULTIBLOCK_READ_COUNT

WHAT IS DB_FILE_MULTIBLOCK_READ_COUNT?
======================================
 
The db_file_multiblock_read_count initialization parameter determines the
maximum number of database blocks read in one I/O operation during a full
table scan.  The setting of this parameter can reduce the number of I/O calls
required for a full table scan, thus improving performance. 
 
While it may be tempting to set a very high value for
db_file_multiblock_read_count to improve overall performance, you must 
consider several factors before doing so.  This is discussed below.
 
 
HOW DOES IT WORK?
=================
 
I/O is a function of the operating system and so there are operating system 
specific limits imposed on the setting of this parameter.  Oracle's ability to 
read multiple blocks is limited by the operating system's upper limit on the 
number of bytes which can be read in a single I/O call (MAX_IO_SIZE).  If the 
value of db_file_multiblock_read_count exceeds internal constraints on the 
setting, it will default to the O/S default: (max_IO_size / db_block_size).  
Consult your operating specific documentation for limits and default values of 
the maximum I/O size.
 
The setting of db_file_multiblock_read_count dictates how many I/O calls will 
be required to complete a table scan.  For example, if 
db_file_multiblock_read_count is set to 32, and the Oracle block size = 8k, 
then a sequential scan of a 256k table can be read in one pass.  This improves 
the speed of the table scan and overall query performance.

 

The maximum value of the overall multiblock read factor is calculated as:  
 
    (db_block_size * db_file_multiblock_read_count)
 
The value of db_file_multiblock_read_count is limited by the multiblock
read factor in the operating system level.  

===============================================
MAX_IO_SIZE FOR HP UX 11 (32 bit)


There is no kernel parameter MAX_IO_SIZE in HP-UX.

Oracle's ability to read multiple blocks is limited by the operating system's upper limit on the number of bytes which can be read in a single I/O call (MAX_IO_SIZE).

1) Using raw disk devices, the maximum I/O transfer size is 1 megabyte.

2) Using LVM (Logical Volume Manager), the maximum I/O transfer size is 256
kbytes.

3) Using LVM with LVM striping, the maximum I/O transfer size is limited to the
size of your strip or at most 256k.

From Oracle point of view:
max_io_size= (db_block_size*db_file_multiblock_read_count).

The maximum IO for HP 11.0 is 256k and for 10.20 is 64k.
===============================================

Solaris 8:

The parameter maxphys in solaris controls the maximum io transfer.It can set in /etc/system,and has a max value 1M.

In case of VXFS you can use the parameter vol_vxio to 256K.

Make sure db_block_size * db_file_multiblock_read_count dosent
exceed 1M."
maxphys(max_io_size) was set to the default value of 128k.
The default value of maxphys on most solaris systems is 128k.
If there is no setting in the /etc/system file on this, then the default value should be taken for this parameter.

You can verify the same by the command,

echo 'maxphys /D' | adb -k (This should be executed as root user).

This will give the current value of maxphys.

===============================================

Win2000

max_io_size for Windows 2000

This number does not change for Windows 2000. The MAX_IO_SIZE for Oracle 8.x versions is 1MB.

For 8.x with a 8k blokc size:
DB_FILE_MULTIBLOCK_READ_COUNT <= MAX_IO_SIZE/DB_BLOCK_SIZE <=>

<=> DB_FILE_MULTIBLOCK_READ_COUNT <= 1048576 / 8192 <=>
<=> DB_FILE_MULTIBLOCK_READ_COUNT <= 128
=================================================

AIX 4.3.3

Anyways there is a 64K limit on (db_file_direct_io_count * db_block_size) irrespective of the max io size.There is no parameter
like max_io_size in AIX.There are kernel parameters like maxpgahead and numfsbufs which control this buffer size.Please do contact AIX vendor on further information on io size.
====================================================

max_io_size on Tru64 UNIX 5.1

Try using the command-- adb -k /dev/ksyms /dev/mem

or

Just in case you don't have "adb" on your system, try this:

/sbin/sysconfig -q io

You'll get lines like..

max_iosize_read = 65536
max_iosize_write = 65536

======================================================

Linux

I could not find any documentation explaining this parameter.
There seems to be no equivalent parameter in linux (like maxphys on solaris) and there is no recommendation from Oracle on this
parameter.


However, i found the following from the linux source:

KIO_MAX_ATOMIC_IO

+ *
+ * Maximum size of an atomic I/O operation where the buffer
+ * is in the application address space.
+ *
+ * This value is constrained to be a power of 2.
+ *
+ * NOTE: This value must not be set higher than 1024KB or
+ * kernel stack corruption may occur.
+ *

This parameter ( KIO_MAX_ATOMIC_IO ) is defined in /usr/src/linux/include/linux/iobuf.h

You may need to contact your sysadmin to find out the current settings and to change this value if required.

以上内容基本摘自metalink,这个东东貌似以前设置不正确还会有点问题。

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

转载于:http://blog.itpub.net/59069/viewspace-442241/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值