MyISAM versus InnoDB
Für das relationale Datenbankmanagementsystem MySQL existieren verschiedene Storage-Engines. Die Storage-Engine kümmert sich um den Hauptteil der Transaktionsverwaltung. Außerdem verwaltet sie Indizes und referenzielle Integritäten. Die bekanntesten Storage-Engines für MySQL sind MyISAM und InnoDB. MyISAM war die Standard-Engine von MySQL bis Version 5.1. Seit Version 5.5 ist dies InnoDB.
Doch welche Unterschiede bestehen zwischen MyISAM und InnoDB? Wo liegen die Vor- und Nachteile und wie sieht die Performance aus?
MyISAM
Vorteile:
- vor allem bei vielen Lesezugriffen zeichnet sich MyISAM durch eine hohe Effizienz aus
- leistungsfähige integrierte Volltextsuche
- Tabellendateien können auf einen anderen PC kopiert werden und stehen sofort in der Datenbank zur Verfügung
Nachteile:
- MyISAM unterstützt keine Transaktionen
- keine referenzielle Integrität, d.h. Integrität auf Beziehungsebene
- bei Schreiboperationen wird immer die gesamte Tabelle gesperrt, sodass währenddessen auf die gesamte Tabelle weder gelesen noch geschrieben werden kann
- Tabelle kann beim Serverausfall reparaturbedürftig sein
InnoDB
Vorteile:
- Unterstützung von Transaktionen
- referenzielle Integrität
- sperrt bei Schreiboperationen nur die betroffene Zeile der Tabell
- sehr schnell
Nachteile:
- keine Volltextsuche (kommt in MySQL 5.6)
Fazit
Mit MySQL 5.5 sollte man auf alle Fälle die neue Standard-Engine InnoDB verwenden. Sie bietet einige Vorteile und ist praktisch immer schneller als MyISAM (Quelle). Einziger Punkt der für MyISAM spricht ist die Volltextsuche. Allerdings wird sich das mit MySQL 5.6 ändern, denn dann soll InnoDB ebenfalls über eine Volltextsuche verfügen. Spätestens dann kann man bedenkenlos auf InnoDB setzen.
Sie sehen gerade einen Platzhalterinhalt von X. Um auf den eigentlichen Inhalt zuzugreifen, klicken Sie auf die Schaltfläche unten. Bitte beachten Sie, dass dabei Daten an Drittanbieter weitergegeben werden.
Mehr Informationen
“….sollte man auf alle Fälle…”
Das würde ich so nicht schreiben.
InnoDB ist Oracles liebstes Kind, darum fällt dieser “Test” von Oracle klar für innoDB aus.
Wer sehr viele Lesezugriffe hat, fuhr bisher mit MyISAM ganz gut.
Die Volltext-Suche muss Oracle bei innoDB erst einmal unter Beweis stellen und wer große Datenmengen auf einen anderen Server kopieren möchte, um sie dort schnell weiter verwenden zu können, wird MyISAM ebenfalls schätzen.
“Auf alle Fälle” würde ich zumindest einschränken.
Mir hatte ein innoDB-Jünger regelmäßig erzählt, wie langsam doch MyISAM wäre (das hatte er wohl irgendwo gelesen, denn praktisch konnte er es mir nicht beweisen).
Als ich ihm die Microtimes für die DB-Aktionen zeigte, konnte er es immer noch nicht glauben, dass eine MyISAM Tabelle so schnell sein könne.
Was jedoch tatsächlich bei sehr vielen Abfragen und sehr großen Tabellen ein Horror war und ist, dass MyISAM die komplette Tabelle sperrt, wenn eine Abfrage mal länger dauert. Da hängen sofort tausende Anfragen im “pending”.