InnoDB uses the asynchronous I/O subsystem
(native AIO) on Linux to perform readahead and write requests for
data file pages. This behavior is controlled by the
configuration option, which applies to Linux systems only and is
enabled by default. On other Unix-like systems,
InnoDB uses synchronous I/O only. Historically,
InnoDB only used asynchronous I/O on Windows
systems. Using the asynchronous I/O subsystem on Linux requires
With synchronous I/O, query threads queue I/O requests, and
InnoDB background threads retrieve the queued
requests one at a time, issuing a synchronous I/O call for each.
When an I/O request is completed and the I/O call returns, the
InnoDB background thread that is handling the
request calls an I/O completion routine and returns to process the
next request. The number of requests that can be processed in
n is the number of
InnoDB background threads. The number of
InnoDB background threads is controlled by
Section 14.6.7, “Configuring the Number of Background InnoDB I/O Threads”.
With native AIO, query threads dispatch I/O requests directly to
the operating system, thereby removing the limit imposed by the
number of background threads.
threads wait for I/O events to signal completed requests. When a
request is completed, a background thread calls an I/O completion
routine and resumes waiting for I/O events.
The advantage of native AIO is scalability for heavily I/O-bound
systems that typically show many pending reads/writes in
SHOW ENGINE INNODB STATUS\G output. The
increase in parallel processing when using native AIO means that
the type of I/O scheduler or properties of the disk array
controller have a greater influence on I/O performance.
A potential disadvantage of native AIO for heavily I/O-bound systems is lack of control over the number of I/O write requests dispatched to the operating system at once. Too many I/O write requests dispatched to the operating system for parallel processing could, in some cases, result in I/O read starvation, depending on the amount of I/O activity and system capabilities.
If a problem with the asynchronous I/O subsystem in the OS
InnoDB from starting, you can start
the server with
option may also be disabled automatically during startup if
InnoDB detects a potential problem such as a
tmpfs file system, and Linux kernel that does
not support asynchronous I/O on