Heim  >  Artikel  >  Datenbank  >  Vergleich zwischen den MySQL-Speicher-Engines MyISAM und InnoDB

Vergleich zwischen den MySQL-Speicher-Engines MyISAM und InnoDB

小云云
小云云Original
2017-11-21 13:52:471645Durchsuche

Daten in MySQL werden mithilfe verschiedener Technologien in Dateien (oder Speicher) gespeichert. Jede dieser Technologien verwendet unterschiedliche Speichermechanismen, Indizierungstechniken und Sperrebenen und bietet letztendlich eine breite Palette unterschiedlicher Funktionen und Fähigkeiten. Durch die Auswahl verschiedener Technologien können Sie zusätzliche Geschwindigkeit oder Funktionalität gewinnen, die die Gesamtfunktionalität Ihrer App verbessert.

MySQL verfügt über mehrere Speicher-Engines, MyISAM und InnoDB sind zwei häufig verwendete. Hier sind einige grundlegende Konzepte zu diesen beiden Motoren (keine ausführliche Einführung).

MyISAM ist die Standardspeicher-Engine für MySQL. Sie basiert auf dem traditionellen ISAM-Typ und unterstützt die Volltextsuche, ist jedoch nicht transaktionssicher und unterstützt keine Fremdschlüssel. Jede MyISAM-Tabelle wird in drei Dateien gespeichert: Die FRM-Datei speichert die Tabellendefinition; die Datendatei ist MYD (MYData); die Indexdatei ist MYI (MYIndex).

InnoDB ist eine Transaktions-Engine, die Rollback, Absturzwiederherstellung, Parallelitätskontrolle für mehrere Versionen, ACID-Transaktionen und Sperren auf Zeilenebene unterstützt (die Zeilensperre der InnoDB-Tabelle ist nicht absolut. Wenn MySQL Wenn der Bereich zu gescannt werden kann, kann die InnoDB-Tabelle auch die gesamte Tabelle sperren (z. B. die SQL-Anweisung während des Like-Vorgangs) und eine sperrenfreie Lesemethode bereitstellen, die mit dem Oracle-Typ übereinstimmt. InnoDB speichert seine Tabellen und Indizes in einem Tablespace, der mehrere Dateien enthalten kann.

Hauptunterschied:

MyISAM ist nicht transaktionssicher, während InnoDB transaktionssicher ist.

Die Granularität der MyISAM-Sperre erfolgt auf Tabellenebene, während InnoDB Sperren auf Zeilenebene unterstützt.

MyISAM unterstützt den Volltexttypindex, InnoDB unterstützt jedoch keinen Volltextindex.

MyISAM ist relativ einfach und daher hinsichtlich der Effizienz besser als InnoDB. Kleine Anwendungen können die Verwendung von MyISAM in Betracht ziehen.

MyISAM-Tabellen werden als Dateien gespeichert. Die Verwendung von MyISAM-Speicher bei der plattformübergreifenden Datenübertragung erspart Ihnen viel Ärger.

InnoDB-Tabellen sind sicherer als MyISAM-Tabellen. Sie können nicht-transaktionale Tabellen in transaktionale Tabellen umwandeln (alter table tablename type=innodb) und dabei sicherstellen, dass keine Daten verloren gehen.

Anwendungsszenario:

MyISAM verwaltet nicht-transaktionale Tabellen. Es bietet Hochgeschwindigkeitsspeicherung und -abruf sowie Volltextsuchfunktionen. Wenn Ihre Anwendung eine große Anzahl von SELECT-Abfragen ausführen muss, ist MyISAM die bessere Wahl.
InnoDB wird für Transaktionsverarbeitungsanwendungen verwendet und verfügt über zahlreiche Funktionen, einschließlich ACID-Transaktionsunterstützung. Wenn Ihre Anwendung eine große Anzahl von INSERT- oder UPDATE-Vorgängen ausführen muss, sollten Sie InnoDB verwenden, was die Leistung gleichzeitiger Mehrbenutzer-Vorgänge verbessern kann.
Allgemeine Befehle:

(1) Zeigen Sie den Speichertyp der Tabelle an (drei Typen):

zeige den Tabellennamen der erstellten Tabelle an
zeige den Tabellenstatus von Datenbankname an, wobei Name=Tabellenname ist
mysqlshow -u user -p passwort --status dbname tabellenname

(2) Ändern Sie die Speicher-Engine der Tabelle:

alter table tablename type=InnoDB

( 3) Starten Sie MySQL. Fügen Sie der Befehlszeile der Datenbank die folgenden Parameter hinzu, damit neu veröffentlichte Tabellen standardmäßig Transaktionen verwenden:

--default-table-type=InnoDB

(4) Vorübergehend Ändern Sie den Standardtabellentyp:

set table_type=InnoDB
zeige Variablen wie „table_type“

Das Obige ist eine kurze Einführung in die beiden Speicher-Engines von MySQL, MyISAM und InnoDB, sowie eine Einführung in die Unterschiede zwischen den beiden Motoren.

Verwandte Empfehlungen:

Ein einfaches Beispiel für die MERGE-Speicher-Engine von MySQL

MySQL-Transaktion und MySQL-Speicher-Engine_MySQL

Was sind die Unterschiede zwischen den beiden MySQL-Engines?

Das obige ist der detaillierte Inhalt vonVergleich zwischen den MySQL-Speicher-Engines MyISAM und InnoDB. 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