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_DSYNCOption zum Öffnen und Leeren der Protokolldateien und fsync() zum Leeren der Datendateien. InnoDB wird nicht verwendetO_DSYNCDirekt, weil es Probleme mit ihm auf vielen Sorten von UNIX. -
O_DIRECT. InnoDB verwendet dieO_DIRECTOption (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_DIRECTOption 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_DIRECTWä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.