InnoDB uses background threads
to service various types of I/O requests. You can configure the
number of background threads that service read and write I/O on
data pages, using the configuration parameters
innodb_read_io_threads and
innodb_write_io_threads. These
parameters signify the number of background threads used for read
and write requests respectively. They are effective on all
supported platforms. You can set the value of these parameters in
the MySQL option file (my.cnf or
my.ini); you cannot change them dynamically.
The default value for these parameters is 4 and
the permissible values range from 1-64.
These parameters replace innodb_file_io_threads
from earlier versions of MySQL. If you try to set a value for this
obsolete parameter, a warning is written to the log file and the
value is ignored. This parameter only applied to Windows
platforms. (On non-Windows platforms, there was only one thread
each for read and write.)
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 8.5.7, “Optimizing InnoDB Disk I/O”.