innodb_flush_method
Le paramètre innodb_flush_method indique comment InnoDB ouvre et vide les fichiers journaux et de données.
Optimisations
Dans l'optimisation InnoDB, la définition de ce paramètre permet de régler les performances de la base de données, le cas échéant.
Les options suivantes permettent de vider les fichiers via InnoDB :
-
fsync
. InnoDB utilise lefsync()
appel système pour vider les fichiers de données et les fichiers journaux. Cette option est le paramètre par défaut. -
O_DSYNC
. InnoDB utilise leO_DSYNC
option permettant d'ouvrir et de vider les fichiers journaux et fsync() pour vider les fichiers de données. InnoDB n'utilise pasO_DSYNC
Directement, parce qu'il y a eu des problèmes avec elle sur de nombreuses variétés d'UNIX. -
O_DIRECT
. InnoDB utilise leO_DIRECT
option (oudirectio()
Sous Solaris) pour ouvrir les fichiers de données et les utilisefsync()
pour vider les fichiers de données et les fichiers journaux. Cette option est disponible sur certaines versions de GNU/Linux, FreeBSD et Solaris. -
O_DIRECT_NO_FSYNC
. InnoDB utilise leO_DIRECT
Option pendant le vidage des E/S ; cependant, il ignore lefsync()
appel système par la suite. Cette option n'est pas adaptée à certains types de systèmes de fichiers (par exemple, XFS). Si vous n'êtes pas sûr que votre système de fichiers nécessite unfsync()
l'appel système, par exemple pour conserver toutes les métadonnées de fichier, utilise leO_DIRECT
à la place.
Observation
Dans les tests de laboratoire NetApp, le fsync
L'option par défaut a été utilisée sur NFS et SAN, et il s'agissait d'un outil d'amélioration des performances par rapport à O_DIRECT
. Lors de l'utilisation de la méthode de rinçage comme O_DIRECT
Avec ONTAP, nous avons observé que le client écrit beaucoup d'écritures sur un seul octet à la frontière du bloc 4096 en série. Ces écritures ont augmenté la latence sur le réseau et dégradé les performances.