MyISAM vs. InnoDB – was ist besser?

Diese Frage lässt sich eigentlich nicht beantworten, denn wie es sooft der Fall ist (z.B. auch bei Windows vs. Linux vs. Mac), haben beide Systeme ihre Vorteile und je nachdem, was man gerade braucht, nutzt man besser MyISAM oder InnoDB. Aber woher weiß man, welches der beiden MySQL-Storage-Engines man braucht? Dazu muss man wissen, welche Vorteile und Nachteile die Systeme haben. Ich habe dazu mal einiges an Wissen zusammengetragen.

Eigenschaften von InnoDB

  • Referentielle Integrität wird automatisch eingehalten
    • Das muss zuvor explizit festgelegt werden
  • SELECT wird schneller ausgeführt
    • INSERT und UPDATE ist dafür langsamer
  • Schreibzugriffe auf Datensätze können gesperrt werden

Eigenschaften MyISAM

  • Häufiger genutzt und gängigster Standard (hohe Stabilität)
  • INSERT und UPDATE werden schneller ausgeführt als bei InnoDB
    • SELECT ist dafür langsamer
  • Integrierte Volltextsuche
  • Schreibzugriffe nur auf ganze Tabellen

Wann setzt man InnoDB ein?

InnoDB eignet sich vor allem bei großen Datenbanken, wo viele Daten miteinander verknüpft sind. Wenn hier Daten gelöscht werden, löscht InnoDB alle referenzierten Daten automatisch mit. Das macht es der Anwendung hinter der Datenbank leichter, die referentielle Integrität einzuhalten.
Prominente Beispiele für Web-Anwendungen mit InnoDB sind unter anderem:

Wann setzt man MyISAM ein?

Bei kleinen Datenbanken oder Anwendungen, wo viel und oft Daten geändert werden. Hier ist MyISAM deutlich performanter, weil INSERT und UPDATE schneller sind. Und natürlich wenn man Texte durchsuchen möchte (Volltextsuche).
Prominente Beispiele für Web-Anwendungen mit MyISAM sind unter anderem:

Und wenn ich beides brauche?
Natürlich ist es möglich, beide Storage Engines für verschiedene Tabellen in der selben Datenbank zu verwenden. So setzt Mediawiki z.B. für die Standard-Suche die MySQL Volltextsuche von MyISAM ein und der Rest der Datenbank verwendet InnoDB.

Schlusswort

Es gibt also nicht DIE beste Storage Engine für MySQL. Je nach Verwendungszweck eignet sich InnoDB oder MyISAM besser.
Ich persönlich nutze lieber InnoDB, aber ihr könnt euch nun selbst eine Meinung bilden.

5 Kommentare zu “MyISAM vs. InnoDB – was ist besser?

  1. Der für mich wichtigste Grund für den Einsatz von InnoDB fehlt mir hier: Die Unterstützung von Transaktionen bei MyISAM. Für viele Dinge scheidet MyISAM genau deswegen aus.

  2. Ich musste mal in einem Projekt im Sekundentakt (fast) rund um die Uhr Daten zwischenspeichern, die nach einer Weiterleitung direkt wieder gelöscht wurden. Mit nur einem Client war InnoDb schnell genug. Schon ab dem zweiten konnte man sehen, wie es langsamer wurde. Ab 10 Clients hat sich das Ganze dermaßen aufgeschaukelt, dass die Inserts am Abend mindestens 30 Minuten verzögert abgeschlossen wurden.
    Nach der Umstellung auf MyISAM gab es das Problem nicht mehr. Selbst bei 500 Clients war keine Verzögerung spürbar.

Schreibe einen Kommentar

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