Seite wählen

MySQL – Concurrent Read/Write

von | Mai 17, 2011 | Development, MySQL

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 startete er früher das wöchentliche Lexware-Backup, welches er nun endlich automatisiert hat. So investiert er 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 seinen beiden Söhnen und seiner Tochter.

0 Kommentare

Trackbacks/Pingbacks

  1. Weekly Snap: MySQL, Puppet & OpenLAP tricks « NETWAYS Blog - [...] begin, Bernd discussed the MySQL concurrent read/write function. Unlike InnoDB which supports real ACID transaction administration, MyISAM nonetheless enables…

Einen Kommentar abschicken

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Mehr Beiträge zum Thema Development | MySQL

Mein PHP-Trainingsprojekt

PHP Schulung Vor kurzem haben wir begonnen, eine neue Programmiersprache zu lernen – PHP. In der ersten Woche haben wir mit den Grundlagen wie Variablen, Arrays, Schleifen begonnen und uns schrittweise zu komplizierterer Syntax wie Funktionen, Objekten und Klassen...

check_prometheus ist jetzt öffentlich verfügbar!

Monitoring ist komplex, das wissen wir hier bei NETWAYS leider zu gut. Deswegen laufen in der Infrastruktur auch mal gerne mehrere Tools für die Überwachung. Zwei gern gesehene Kandidaten sind dabei Icinga und Prometheus. Icinga und Prometheus erfüllen...