innodb_Flush_Method
Der Parameter innodb_flush_method gibt an, wie InnoDB die Protokoll- und Datendateien öffnet und löscht.
Optimierungen
In der InnoDB-Optimierung wird durch die Einstellung dieses Parameters die Datenbankleistung ggf. optimiert.
Die folgenden Optionen sind für das Spülen der Dateien über InnoDB:
-
fsync
. InnoDB verwendet diefsync()
Systemaufruf, um sowohl die Daten- als auch die Protokolldateien zu leeren. Diese Option ist die Standardeinstellung. -
O_DSYNC
. InnoDB verwendet dieO_DSYNC
Option zum Öffnen und Leeren der Protokolldateien und fsync() zum Leeren der Datendateien. InnoDB wird nicht verwendetO_DSYNC
Direkt, weil es Probleme mit ihm auf vielen Sorten von UNIX. -
O_DIRECT
. InnoDB verwendet dieO_DIRECT
Option (oderdirectio()
Unter Solaris), um die Datendateien zu öffnen und zu verwendenfsync()
Um sowohl die Daten als auch die Protokolldateien zu löschen. Diese Option ist auf einigen GNU/Linux-Versionen, FreeBSD und Solaris verfügbar. -
O_DIRECT_NO_FSYNC
. InnoDB verwendet dieO_DIRECT
Option beim Spülen von E/A, wird jedoch übersprungenfsync()
Systemaufruf danach. Diese Option ist für einige Arten von Dateisystemen ungeeignet (z. B. XFS). Wenn Sie sich nicht sicher sind, ob Ihr Dateisystem einen erfordertfsync()
Systemaufruf – zum Beispiel zum Beibehalten aller Dateimetadaten – verwendet denO_DIRECT
Wählen Sie stattdessen.
Beobachtung
In den NetApp-Labortests ist der fsync
Auf NFS und SAN kam die Standardoption zum Einsatz. Im Vergleich dazu war sie ein großartiger Performance-Improvisator O_DIRECT
. Bei Verwendung der Spülmethode als O_DIRECT
Bei ONTAP konnten wir beobachten, dass der Client viele Single-Byte-Schreibvorgänge am Rand des 4096. Blocks in serieller Form schreibt. Diese Schreibvorgänge haben die Latenz über das Netzwerk erhöht und die Performance beeinträchtigt.