InnoDB uses background threads to service various types of I/O
requests. Starting from InnoDB 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 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 InnoDB 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 ×
innodb_read_io_threads
pending
read requests in SHOW ENGINE INNODB STATUS
, you
might gain by increasing the value of
innodb_read_io_threads
.
For more information about InnoDB I/O performance, see
Section 7.5.7, “Optimizing InnoDB
Disk I/O”.