14.8.6 Configuring the Number of Background InnoDB I/O Threads
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
innodb_write_io_threads configuration parameters. 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 values for these parameters in the MySQL option file (
my.ini); you cannot change values dynamically. The default value for these parameters is
4 and permissible values range from
The purpose of these configuration options 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 read-ahead requests.
InnoDB tries to balance the load of incoming requests in such way that most 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. 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 output, you might improve performance by increasing the value of
On Linux systems,
InnoDB uses the asynchronous I/O subsystem by default to perform read-ahead and write requests for data file pages, which changes the way that
InnoDB background threads service these types of I/O requests. For more information, see Section 14.8.7, “Using Asynchronous I/O on Linux”.
For more information about
InnoDB I/O performance, see Section 8.5.8, “Optimizing InnoDB Disk I/O”.