Von Matthias Jung auf Mittwoch, 06. April 2022
Kategorie: Data Management

Mach es einfach mal einfach. InnoDB Konfiguration im Automatikmodus

Immer wieder fragen uns Kunden, wie Sie die wichtigsten Parameter der Storage-Engine InnoDB einstellen sollen. Die Antwort kann ab der MySQL Version 8.0 sehr einfach sein: innodb_dedicated_server = ON

Warum kompliziert, wenn es auch einfach geht?

Spätestens mit der Version MySQL 8.0 ist die Engine InnoDB der De-facto-Standard beim Betrieb von MySQL Datenbanken. Eine sinnvolle Konfiguration der wichtigsten Parameter ist unabdingbar, um eine gute Performance des Servers grundlegend zu gewährleisten. Diese Parameter beinhalten auf jeden Fall:

Dezidiert dediziert!

Wie der Parameter "innodb_dedicated_server" schon vom Namen her nahelegt, ist diese Einstellung nur für Systeme empfohlen auf denen dediziert eine MySQL Datenbank betrieben wird, die hauptsächlich InnoDB als Engine nutzt. Weitere MySQL Instanzen oder andere Applikationen sollten hier damit nicht betrieben werden.​

Die einzelnen, oben genannten Parameter, werden dann anhand von offengelegten Formeln berechnet, können aber jederzeit durch eine "dedizierte" Konfiguration manuell angepasst werden.

Die Formel(n) für den Erfolg

Die Größe des Buffer Pools wird direkt über den Speicher des Servers errechnet. Dabei wird die folgende Methodik verwendet:

  • Server hat weniger als 1 GB RAM --> 128 MB
  • Server hat zwischen 1 und 4 GB RAM --> RAM * 0,5
  • Server hat mehr als 4 GB RAM --> RAM * 0,75

In unserem Beispiel hat unser kleiner Server (Linux VM) lediglich 2 GB RAM. Damit allokiert die MySQL Instanz automatisch "2 GB * 0,5 = 1 GB" InnoDB Buffer Pool.
Ähnlich verhält es sich für die anderen Parameter. Die "Formel" für die "innodb_log_file_size" ist wie folgt (ab Version 8.0.14):


Die Anzahl der Log-Dateien ("innodb_log_files_in_group") erklärt sich so:


Zu guter Letzt wird der Parameter "innodb_flush_method" in aller Regel auf "O_DIRECT_NO_FSYNC" gesetzt. Dies verhindert das zweimalige Buffer zwischen OS-Cache und der Festplatte und funktioniert sehr gut für I/O-Systeme mit geringer Latenz.

Fazit: Einfach (und) gut?

Sofern die Rahmenbedingungen (dedizierte MySQL InnoDB Datenbankserver) stimmen, sind die gewählten Parameter für ein initiales Setup durchaus brauchbar. Natürlich sollte im weiteren Betrieb (sofern Probleme auftauchen) immer wieder geprüft werden, ob trotzdem ein "manueller" Eingriff notwendig sein könnte. Wie bei jeder "Faustformel" haben auch die hier sinnvollen Einstellungen nicht den Anspruch in jedem (!) Falle korrekt zu sein.

Sie haben Fragen rund um den Betrieb von MySQL? Dann sprechen Sie uns an.

Kommentare hinterlassen