MyISAM - MyISAM
MyISAM war die Standardspeicher- Engine für die MySQL- Versionen des relationalen Datenbankverwaltungssystems vor 5.5, die im Dezember 2009 veröffentlicht wurden. Es basiert auf dem älteren ISAM- Code, hat jedoch viele nützliche Erweiterungen.
Dateisystem
Jede MyISAM-Tabelle wird in drei Dateien auf der Festplatte gespeichert (wenn sie nicht partitioniert ist). Die Dateien haben Namen, die mit dem Tabellennamen beginnen und haben eine Erweiterung, um den Dateityp anzugeben. MySQL verwendet eine .frm-Datei, um die Definition der Tabelle zu speichern, aber diese Datei ist nicht Teil der MyISAM-Engine; stattdessen ist es ein Teil des Servers. Die Datendatei hat die Erweiterung .MYD (MYData). Die Indexdatei hat die Erweiterung .MYI (MYIndex). Die Indexdatei kann, falls sie verloren geht, jederzeit durch erneutes Erstellen von Indizes wiederhergestellt werden.
Das Dateiformat hängt von der Tabellenoption ROW_FORMAT ab. Folgende Formate stehen zur Verfügung:
- FIXED: Fixed ist ein Format, bei dem alle Daten (einschließlich Typen mit variabler Länge) eine feste Länge haben. Dieses Format ist schneller zu lesen und verbessert die Reparatur beschädigter Tabellen. Wenn eine Tabelle große Spalten variabler Länge (BLOB oder TEXT) enthält, kann sie das FIXED-Format nicht verwenden.
- DYNAMISCH: Spalten mit variabler Länge haben keine feste Länge. Dieses Format ist etwas langsamer zu lesen, spart aber etwas Speicherplatz auf der Festplatte.
- COMPRESSED: Komprimierte Tabellen können mit einem dedizierten Tool erstellt werden, während MySQL nicht ausgeführt wird, und sie sind schreibgeschützt. Dies macht sie zwar normalerweise zu einer nicht praktikablen Option, die Komprimierungsrate ist jedoch im Allgemeinen deutlich höher als bei Alternativen.
MyISAM-Dateien hängen nicht vom System ab, und da MyISAM nicht transaktional ist, hängt ihr Inhalt nicht von der aktuellen Server-Auslastung ab. Daher ist es möglich, sie zwischen verschiedenen Servern zu kopieren.
Merkmale
MyISAM ist für Umgebungen mit umfangreichen Lesevorgängen und wenigen oder gar keinen Schreibvorgängen optimiert. Ein typischer Bereich, in dem man MyISAM bevorzugen könnte, ist das Data Warehouse, da es Abfragen für sehr große Tabellen beinhaltet und die Aktualisierung solcher Tabellen erfolgt, wenn die Datenbank nicht verwendet wird (normalerweise nachts).
Der Grund, warum MyISAM schnelle Lesevorgänge ermöglicht, ist die Struktur seiner Indizes: Jeder Eintrag zeigt auf einen Datensatz in der Datendatei, und der Zeiger ist vom Anfang der Datei versetzt. Auf diese Weise können Datensätze schnell gelesen werden, insbesondere wenn das Format FIXED ist. Somit haben die Reihen eine konstante Länge. Auch Einfügungen sind einfach, da neue Zeilen am Ende der Datendatei angehängt werden. Allerdings sind Lösch- und Aktualisierungsoperationen problematischer: Löschvorgänge müssen einen leeren Raum lassen, sonst würden sich die Offsets der Zeilen ändern; das gleiche gilt für Updates, da die Länge der Zeilen kürzer wird; Wenn die Aktualisierung die Zeile länger macht, wird die Zeile fragmentiert. Um Zeilen zu defragmentieren und leeren Speicherplatz zu beanspruchen, muss der Befehl OPTIMIZE TABLE ausgeführt werden. Aufgrund dieses einfachen Mechanismus sind MyISAM-Indexstatistiken normalerweise ziemlich genau.
Die Einfachheit von MyISAM hat jedoch mehrere Nachteile. Der Hauptmangel von MyISAM ist das Fehlen von Transaktionsunterstützung . Außerdem werden Fremdschlüssel nicht unterstützt. In normalen Anwendungsfällen scheint InnoDB schneller zu sein als MyISAM.
Versionen von MySQL 5.5 und höher wurden auf die InnoDB- Engine umgestellt, um Einschränkungen der referenziellen Integrität und eine höhere Parallelität zu gewährleisten .
MyISAM unterstützt die FULLTEXT-Indizierung und OpenGIS-Datentypen.
Gabeln
MariaDB verfügt über eine Speicher-Engine namens Aria , die als „absturzsichere Alternative zu MyISAM“ beschrieben wird. Die MariaDB-Entwickler arbeiten jedoch weiterhin an MyISAM-Code. Die größte Verbesserung ist der "Segmented Key Cache". Wenn es aktiviert ist, wird der Cache der MyISAM-Indizes in Segmente unterteilt. Dies verbessert die Parallelität, da Threads selten den gesamten Cache sperren müssen.
In MariaDB unterstützt MyISAM auch virtuelle Spalten .
Drizzle enthält kein MyISAM.
Siehe auch
Anmerkungen
Externe Links
- MySQL-Dokumentation zur MyISAM-Speicher-Engine
- Das Limit für offene Dateien von MyISAM und das Tabellen-Cache-Problem erklärt
- Der Artikel über Probleme, die bei der Verwendung von MyISAM auftreten können
- MySQL Engines - MyISAM vs. Innodb von Rackspace (Archiviert am 08.02.2015)
- Konvertieren Sie Ihre MySQL-Datenbank von MyISAM in InnoDB und bereiten Sie sich gleichzeitig auf Drupal 7 vor (Archiviert am 08.03.2013)
- Konvertieren von Tabellen von MyISAM zu InnoDB