InnoDB uses background threads to service various types of I/O
requests. Starting from InnoDB storage engine 1.0.4, the number of
background threads tasked with servicing read and write I/O on
data pages is configurable. In previous versions of InnoDB,
there was only one thread each for read and write on non-Windows
platforms. On Windows, the number of background threads was
controlled by innodb_file_io_threads
. The configuration
parameter innodb_file_io_threads
has been removed in
InnoDB storage engine 1.0.4. If you try to set a value for this
parameter, a warning is written to the log file and the value is
ignored.
In place of innodb_file_io_threads
, two new configuration
parameters are introduced in the InnoDB storage engine 1.0.4, which are
effective on all supported platforms. The two parameters
innodb_read_io_threads
and innodb_write_io_threads
signify the
number of background threads used for read and write requests
respectively. You can set the value of these parameters in the
MySQL option file (my.cnf
or
my.ini
). These parameters cannot be changed
dynamically. The default value for these parameters is
4
and the permissible values range from
1-64
.
The purpose of this change is to make InnoDB more scalable on
high end systems. Each background thread can handle up to 256
pending I/O requests. A major source of background I/O is the read
ahead requests. InnoDB tries to balance the load of incoming
requests in such way that most of the background threads share
work equally. InnoDB also attempts to allocate read requests
from the same extent to the same thread to increase the chances of
coalescing the requests together. If you have a high end I/O
subsystem and you see more than 64 times innodb_read_io_threads
pending read requests in SHOW ENGINE INNODB
STATUS
, then you may gain by increasing the value of
innodb_read_io_threads
.
This is the User’s Guide for InnoDB storage engine 1.1 for MySQL 5.5, generated on 2010-04-13 (revision: 19994) .