Heim >Datenbank >MySQL-Tutorial >Detaillierte Analyse der Unterschiede zwischen MySQL InnoDB- und MyISAM-Daten-Engines

Detaillierte Analyse der Unterschiede zwischen MySQL InnoDB- und MyISAM-Daten-Engines

怪我咯
怪我咯Original
2017-07-05 11:23:091387Durchsuche

InnoDB und MyISAM sind die beiden am häufigsten verwendeten Tabellentypen bei der Verwendung von MySQL. Jeder hat seine eigenen Vor- und Nachteile, abhängig von der spezifischen Anwendung. Der grundlegende Unterschied besteht darin, dass der MyISAM-Typ keine erweiterte Verarbeitung wie die Transaktionsverarbeitung unterstützt, während der InnoDB-Typ

unterstützt. Die MyISAM-Typtabelle legt Wert auf Leistung und ihre Ausführungszeiten sind schneller als die des InnoDB-Typs, bietet jedoch keine Leistung Transaktionsunterstützung. InnoDB bietet Transaktionsunterstützung und erweiterte Datenbankfunktionen wie Fremdschlüssel.

MyIASM ist eine neue Version der IASM-Tabelle mit den folgenden Erweiterungen:
Portabilität auf binärer Ebene.
NULL-SpalteIndex.
Hat weniger Fragmentierung als ISAM-Tabellen für Zeilen variabler Länge.
Unterstützt große Dateien.
Bessere Indexkomprimierung.
Bessere statistische Verteilung der Schlüssel.
Bessere und schnellere Handhabung von Auto_Inkrementen.

Im Folgenden sind einige Details und spezifische Implementierungsunterschiede aufgeführt:

1.InnoDB unterstützt keine Indizes vom Typ FULLTEXT.
2. InnoDB speichert nicht die spezifische Anzahl von Zeilen in der Tabelle. Das heißt, wenn Sie select count(*) from table ausführen, muss InnoDB die gesamte Tabelle scannen, um zu berechnen, wie viele Zeilen gibt es, aber MyISAM muss nur die Anzahl der gespeicherten Zeilen auslesen. Beachten Sie, dass die Operationen der beiden Tabellen identisch sind, wenn die count(*)-Anweisung eine Where-Bedingung enthält.
3. Für Felder vom Typ AUTO_INCREMENT muss InnoDB einen Index nur mit diesem Feld enthalten, aber in der MyISAM-Tabelle kann ein gemeinsamer Index mit anderen Feldern eingerichtet werden.
4. Beim DELETE FROM table erstellt InnoDB die Tabelle nicht neu, sondern löscht Zeile für Zeile.
5. Der LOAD TABLE FROM MASTER-Vorgang funktioniert nicht für InnoDB. Die Lösung besteht darin, zuerst die InnoDB-Tabelle in eine MyISAM-Tabelle zu ändern und sie dann nach dem Importieren der Daten in eine InnoDB-Tabelle zu ändern Tabellen (z. B. externe Schlüssel) sind nicht anwendbar.

Außerdem ist die Zeilensperre der InnoDB-Tabelle nicht absolut. Wenn MySQL beim Ausführen einer SQL-Anweisung den zu scannenden Bereich nicht ermitteln kann, sperrt die InnoDB-Tabelle auch die gesamte Tabelle, beispielsweise die Aktualisierungstabelle set num=1 where name like „%aaa%“

Keine Tabelle ist allmächtig. Nur durch die Auswahl des geeigneten Tabellentyps passend zum Geschäftstyp können die Leistungsvorteile von MySQL maximiert werden.

Das obige ist der detaillierte Inhalt vonDetaillierte Analyse der Unterschiede zwischen MySQL InnoDB- und MyISAM-Daten-Engines. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn