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/