MyISAM

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen

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]

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

[Bearbeiten | Quelltext bearbeiten]
  1. http://www.oracle.com/us/corporate/press/195726
  2. siehe z. B. Pachev: Understanding MySQL Internals, Chapter 10: Storage Engines
  3. Archivierte Kopie (Memento vom 29. Januar 2012 im Internet Archive)
  4. http://dev.mysql.com/doc/refman/5.5/en/create-table.html