MyISAM
MyISAM (My Indexed Sequential Access Method) ist eine Storage-Engine des Datenbankverwaltungssystems MySQL. Sie baut, um einige Erweiterungen ergänzt, auf dem älteren ISAM-System auf und war bis MySQL 5.1 Standard-Storage-Engine. Ab Version 5.5 wurde sie durch InnoDB als Standard-Storage-Engine abgelöst.[1]
Eigenschaften
MyISAM zeichnet sich durch hohe Effizienz im Vergleich zu anderen von MySQL unterstützten Tabellentypen aus und unterstützt ab Version 3.23.23 von MySQL eine leistungsfähige Volltextsuche. MyISAM ist daneben für Tabellen empfehlenswert, die deutlich häufiger gelesen werden (SELECT), als in sie geschrieben wird (INSERT/UPDATE). MyISAM unterstützt allerdings im Unterschied zu z. B. InnoDB keine Transaktionen, so dass im Fehlerfall inkonsistente Daten in der Datenbank zurückbleiben können, falls von mehreren zusammengehörigen Queries einige bereits ausgeführt wurden und andere nicht. Auch bietet MyISAM keine referenzielle Integrität.[2]
Für jede MyISAM-Tabelle werden im Dateisystem drei Dateien angelegt. Die Namen jeder der Dateien bestehen dabei aus dem Namen der Tabelle und einer Dateinamenserweiterung, die den Dateityp kennzeichnet: Für die Tabellendefinition .frm
, für die Daten .MYD
(MYData) und für den Index .MYI
(MyIndex).
Um explizit eine MyISAM-Tabelle zu erstellen, kann in SQL die ENGINE
Option vorgegeben werden:
CREATE TABLE t (i INT) ENGINE = MYISAM;
(Anmerkung: Ältere Versionen von MySQL verwenden das Schlüsselwort TYPE
statt ENGINE
(Beispiel: TYPE = MYISAM
). MySQL 5.0 und 5.1 unterstützen diese Syntax abwärtskompatibel, allerdings wird die Verwendung von ENGINE
empfohlen. Seit MySQL 5.5 wird nur noch das Schlüsselwort ENGINE
unterstützt.)[3][4]
Die Verwendung von ENGINE
ist optional. Ohne Angabe wird der in den Voreinstellungen hinterlegte Tabellentyp verwendet. MySQL nutzt ab Version 5.5 standardmäßig InnoDB.
Einzelnachweise
- http://www.oracle.com/us/corporate/press/195726
- siehe z. B. Pachev: Understanding MySQL Internals, Chapter 10: Storage Engines
- Archivierte Kopie (Memento des Originals vom 29. Januar 2012 im Internet Archive) Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.
- http://dev.mysql.com/doc/refman/5.5/en/create-table.html
Literatur
- Sasha Pachev: Understanding MySQL Internals, O'Reilly 2007, ISBN 978-0-596-00957-1