MyISAM
MyiSam war der Standard Speichermotor für die Mysql Relationales Datenbank Management System Versionen vor 5.5 veröffentlicht im Dezember 2009.[1] Es basiert auf dem älteren Isam Code, aber es hat viele nützliche Erweiterungen.
Dateisystem
Jede MyISAM -Tabelle wird in drei Dateien auf der Festplatte gespeichert (falls sie nicht partitioniert ist). Die Dateien haben Namen, die mit dem Tabellennamen beginnen, und 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 verfügt über eine Erweiterung .myd (mydata). Die Indexdatei hat eine Erweiterung .myi (myIndex). Die Indexdatei kann, wenn sie verloren ist, immer durch Nachbau von Indizes nachgebildet werden.
Das Dateienformat hängt von der Option "Row_format" ab. Die folgenden Formate sind verfügbar:
- Behoben: Behoben ist ein Format, bei dem alle Daten (einschließlich Typenlängen-Typen) eine feste Länge aufweisen. Dieses Format ist schneller zu lesen und verbessert die Reparatur der beschädigten Tabellen. Wenn eine Tabelle große Spalten mit variabler Länge (Blob oder Text) enthält, kann das feste Format nicht verwendet werden.
- Dynamik: Spalten variabler Länge haben keine feste Längengröße. Dieses Format ist etwas langsamer zu lesen, spart aber Platz auf der Festplatte.
- Komprimiert: 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 normalerweise zu einer nicht lebensfähigen Option, die Kompressionsrate ist im Allgemeinen sinnvoll höher als Alternativen.
MYISAM -Dateien hängen nicht vom System ab, und da MyISAM nicht transaktional ist, hängt ihr Inhalt nicht von der aktuellen Server -Workload ab. Daher ist es möglich, sie zwischen verschiedenen Servern zu kopieren.
Merkmale
MyISAM ist für Umgebungen mit schweren Lesevorgängen und nur wenige Schreibvorgänge oder gar keine optimiert. Ein typischer Bereich, in dem man myiSam bevorzugen könnte Data Warehouse Da es Abfragen in sehr großen 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 Einstieg zeigt zu einem Datensatz in der Datendatei, und der Zeiger wird vom Beginn der Datei ausgeglichen. Auf diese Weise können Datensätze schnell gelesen werden, insbesondere wenn das Format festgelegt ist. Somit sind die Zeilen von konstanter Länge. Einfügungen sind auch einfach, da am Ende der Datendatei neue Zeilen angehängt werden. Lösch- und Aktualisierungsvorgänge sind jedoch problematischer: Deletten müssen einen leeren Raum hinterlassen, oder die Aussagen der Zeilen würden sich ändern. Gleiches gilt für Aktualisierungen, da die Länge der Reihen kürzer wird. Wenn das Update die Zeile länger macht, ist die Zeile fragmentiert. Um die Zeilen zu entfalten und einen leeren Raum zu beanspruchen, muss der Befehl optimize table ausgeführt werden. Aufgrund dieses einfachen Mechanismus sind die MyISAM -Indexstatistiken normalerweise ziemlich genau.
Die Einfachheit von Myisam hat jedoch mehrere Nachteile. Der Hauptmangel an Myisam ist das Fehlen von Transaktionen Unterstützung. Ebenfalls, fremde Schlüssel werden nicht unterstützt. In normalen Anwendungsfällen scheint InnoDB schneller zu sein als MyISAM.[2]
Versionen von MySQL 5,5 und größer sind auf die Wechsel zu den InnoDb Motor zu gewährleisten Referenzintegrität Einschränkungen und höher Parallelität.
MyISAM unterstützt die FullText -Indexierung und OpenGIS -Datentypen.
Gabeln
Mariadb Hat eine Speichermotor ruft Arie, was als "Crash-Safe-Alternative zu MyIsam" beschrieben wird.[3] Die Mariadb -Entwickler arbeiten jedoch immer noch an MyISAM -Code. Die Hauptverbesserung ist der "segmentierte Schlüsselcache".[4] Wenn es aktiviert ist, ist der Cache von MYISAM -Indizes in Segmente unterteilt. Dies verbessert die Parallelität, da Threads selten den gesamten Cache sperren müssen.
In Mariadb unterstützt auch Myisam Virtuelle Spalten.
Nieselregen schließt MyISAM nicht ein.
Siehe auch
Anmerkungen
- ^ "MySQL 5.5 Referenzhandbuch :: 13 Speichermotoren :: 13.6 Die InnoDB Storage Engine". 2009-05-10. Archiviert von das Original Am 2010-11-20. Abgerufen 2021-03-16.
- ^ "MySQL Performance: InnoDB gegen MyISAM in 5.6". 2012-11-16. Abgerufen 2021-03-16.
- ^ "Aria FAQ". Mariadb. 2010-08-15. Abgerufen 2021-03-16.
- ^ "Segmentierter Schlüsselcache". Mariadb. 2010-08-17. Abgerufen 2021-03-16.
Externe Links
- MySQL -Dokumentation zur MyISAM Storage Engine
- MYISAMs offene Dateien begrenzen und das Problem der Tabellen-Cache
- Der Artikel über Probleme, die bei der Verwendung von MyISAM auftreten werden
- MySQL -Motoren - MyiSam gegen InnoDB von Rackspace (archiviert am 2015-02-08)
- Konvertieren Sie Ihre MySQL -Datenbank von MyISAM in InnoDB und bereiten Sie sich gleichzeitig für Drupal 7 vor (Archiviert am 2013-03-08)
- Tische von MyISAM nach InnoDB konvertieren