Rechercher dans le manuel MySQL
15.8.6 Using Asynchronous I/O on Linux
InnoDB
uses the asynchronous I/O subsystem
(native AIO) on Linux to perform read-ahead and write requests for
data file pages. This behavior is controlled by the
innodb_use_native_aio
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
the libaio
library.
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
parallel is n
, where
n
is the number of
InnoDB
background threads. The number of
InnoDB
background threads is controlled by
innodb_read_io_threads
and
innodb_write_io_threads
. See
Section 15.8.5, “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. InnoDB
background
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
prevents InnoDB
from starting, you can start
the server with
innodb_use_native_aio=0
. This
option may also be disabled automatically during startup if
InnoDB
detects a potential problem such as a
combination of tmpdir
location,
tmpfs
file system, and Linux kernel that does
not support asynchronous I/O on tmpfs
.
Traduction non disponible
Le manuel MySQL n'est pas encore traduit en français sur l'infobrol. Seule la version anglaise est disponible pour l'instant.
Document créé le 26/06/2006, dernière modification le 26/10/2018
Source du document imprimé : https://www.gaudry.be/mysql-rf-innodb-linux-native-aio.html
L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.
Références
Ces références et liens indiquent des documents consultés lors de la rédaction de cette page, ou qui peuvent apporter un complément d'information, mais les auteurs de ces sources ne peuvent être tenus responsables du contenu de cette page.
L'auteur de ce site est seul responsable de la manière dont sont présentés ici les différents concepts, et des libertés qui sont prises avec les ouvrages de référence. N'oubliez pas que vous devez croiser les informations de sources multiples afin de diminuer les risques d'erreurs.