InnoDB master thread and other threads
perform various tasks in the background, most of which are I/O
related, such as flushing dirty pages from the buffer pool and
writing changes from the change buffer to the appropriate
InnoDB attempts to perform
these tasks in a way that does not adversely affect the normal
working of the server. It tries to estimate the available I/O
bandwidth and tune its activities to take advantage of available
defines the overall I/O capacity available to
InnoDB. It should be set to approximately the
number of I/O operations that the system can perform per second
InnoDB estimates the I/O bandwidth
available for background tasks based on the set value.
You can set
a value of 100 or greater. The default value is
200. Typically, values around 100 are
appropriate for consumer-level storage devices, such as hard
drives up to 7200 RPMs. Faster hard drives, RAID configurations,
and solid state drives (SSDs) benefit from higher values.
Ideally, keep the setting as low as practical, but not so low that
background activities fall behind. If the value is too high, data
is removed from the buffer pool and change buffer too quickly for
caching to provide a significant benefit. For busy systems capable
of higher I/O rates, you can set a higher value to help the server
handle the background maintenance work associated with a high rate
of row changes. Generally, you can increase the value as a
function of the number of drives used for
InnoDB I/O. For example, you can increase the
value on systems that use multiple disks or SSDs.
The default setting of 200 is generally sufficient for a lower-end SSD. For a higher-end, bus-attached SSD, consider a higher setting such as 1000, for example. For systems with individual 5400 RPM or 7200 RPM drives, you might lower the value to 100, which represents an estimated proportion of the I/O operations per second (IOPS) available to older-generation disk drives that can perform about 100 IOPS.
Although you can specify a high value such as a million, in practice such large values have little benefit. Generally, a value higher than 20000 is not recommended unless you are certain that lower values are insufficient for your workload.
Consider write workload when tuning
innodb_io_capacity. Systems with
large write workloads are likely to benefit from a higher setting.
A lower setting may be sufficient for systems with a small write
innodb_io_capacity setting is
not a per buffer pool instance setting. Available I/O capacity is
distributed equally among buffer pool instances for flushing
You can set the
innodb_io_capacity value in the
MySQL option file (
my.ini) or modify it at runtime using a
statement, which requires privileges sufficient to set global
system variables. See
Section 126.96.36.199, “System Variable Privileges”.