MySQL – Concurrent Read/Write

Grundsätzlich haben die verschiedenen MySQL-Storage-Engines eigene Möglichkeiten für eine gewisse Transaktionssicherheit zu sorgen. Während InnoDB eine wirkliche ACID-Transaktionsverwaltung unterstützt bietet MyISAM dafür keine Unterstützung an. Besonders gut zu bemerken ist die Situation bei einer ausgeglichenen Schreib-Leserate und damit verbundenen Lockaufkommen.
Obwohl MyISAM nur eine Table-Level-Locking unterstützt gibt es trotzdem die Möglichkeit eines gleichzeitigen Schreib- Lesevorgangs. Der hierfür zuständige Parameter lautet concurrent_insert und steuert die Behandlung zeitgleicher Zugriffe auf eine Tabelle. Nachfolgend kurz die Erläuterung der möglichen Parameter:

  • 0 = Die Funktion ist deaktiviert.
  • 1 = Dies ist die Standardeinstellung. Sie aktiviert nebenläufige Einfügeoperationen für MyISAM-Tabellen, die keine Lücken aufweisen.
  • 2 = Dieser Wert aktiviert nebenläufige Einfügeoperationen für alle MyISAM-Tabellen. Wenn eine Tabelle eine Lücke aufweist und gerade von einem anderen Thread verwendet wird, wird der neue Datensatz am Tabellenende eingefügt. Wird die Tabelle gerade nicht verwendet, dann setzt MySQL eine normale Lesesperre und fügt den neuen Datensatz in die Lücke ein.

Damit also die Standardeinstellung richtig funktioniert und MyISAM ein Anhängen von Tabellenzeilen zulässt ist es wichtig regelmässig Optimize Table auszuführen und so die vorhandenen Lücken zu schliessen.
!!! Wichtig !!! Leider funktioniert das nicht mehr, wenn das Schreiben von Binlogs aktiviert ist, da die Datenbankengine sich dann “gezwungen” fühlt die richtige Reihenfolge serialisiert einzuhalten um eine Eindeutigkeit im Binlog sicherzustellen.

Bernd Erk
Bernd Erk
CEO

Bernd ist Geschäftsführer der NETWAYS Gruppe und verantwortet die Strategie und das Tagesgeschäft. Bei NETWAYS kümmert er sich eigentlich um alles, was andere nicht machen wollen oder können (meistens eher wollen). Darüber hinaus startet er das wöchentliche Lexware-Backup und investiert seine ganze Energie in den Rest der Truppe und versucht für kollektives Glück zu sorgen. In seiner Freizeit macht er mit sinnlosen Ideen seine Frau verrückt und verbündet sich dafür mit seinem Sohn.