Heim  >  Artikel  >  Datenbank  >  Eine Erklärung der sechs Hauptunterschiede zwischen den MySQL-Speicher-Engines InnoDB und Myisam

Eine Erklärung der sechs Hauptunterschiede zwischen den MySQL-Speicher-Engines InnoDB und Myisam

怪我咯
怪我咯Original
2017-05-07 11:39:031471Durchsuche

MyISAM
InnoDB
Der Unterschied in der Zusammensetzung:

Jedes MyISAM wird als drei Dateien auf der Festplatte gespeichert. Der Name der ersten Datei beginnt mit dem Namen der Tabelle und die Erweiterung gibt den Dateityp an.

In der .frm-Datei werden Tabellendefinitionen gespeichert.

Die Erweiterung der Datendatei ist .MYD (MYData).

Die Erweiterung der Indexdatei ist .MYI (MYIndex).

Festplattenbasierte Ressourcen sind die InnoDB-Tabellenbereichsdatendatei und ihre Protokolldatei. Die Größe der InnoDB-Tabelle ist nur durch die Größe der Betriebssystemdatei begrenzt, im Allgemeinen 2 GB


Transaktionsverarbeitung:

Die MyISAM-Typtabelle legt Wert auf Leistung und ihre Ausführungszeiten sind schneller als die des InnoDB-Typs, bietet jedoch keine Transaktionsunterstützung

InnoDB bietet Transaktionsunterstützung, Fremdschlüssel und andere erweiterte Datenbankfunktionen

UPDATE AUSWÄHLEN, EINFÜGEN, LöschenVorgänge

Wenn Ihre Daten viel SELECT ausführen, ist MyISAM die bessere Wahl


1.Wenn Ihre Daten viel INSERT oder UPDATE, aus Leistungsgründen sollte die InnoDB-Tabelle


2.DELETE FROM table verwendet werden, InnoDB nicht Erstellen Sie die Tabelle neu und löschen Sie sie Zeile für Zeile.

3.LOAD TABLE FROM MASTER funktioniert für InnoDB nicht. Die Lösung besteht darin, zuerst die InnoDB-Tabelle in eine MyISAM-Tabelle zu ändern, die Daten zu importieren und sie dann in eine InnoDB-Tabelle zu ändern , aber für Tabellen, die zusätzliche InnoDB-Funktionen (z. B. Fremdschlüssel) verwenden, gelten

nicht für AUTO_INCREMENT Operationen
pro Interne Behandlung einer AUTO_INCREMEN-Spalte in einer Tabelle.



MyISAM wird automatisch für INSERT und UPDATE-Vorgänge aktualisiert Diese Spalte . Dadurch werden AUTO_INCREMENT-Spalten schneller (mindestens 10 %). Nachdem der Wert am Anfang der Sequenz gelöscht wurde, kann er nicht mehr verwendet werden. (Wenn die Spalte AUTO_INCREMENT als letzte Spalte eines mehrspaltigen Index definiert ist, ist es möglich, am Anfang der Sequenz entfernte Werte wiederzuverwenden.)
Der AUTO_INCREMENT-Wert kann mit ALTER TABLE oder myisamch zurückgesetzt werden.

Für Felder vom Typ AUTO_INCREMENT muss InnoDB einen Index nur mit diesem Feld enthalten, aber in der MyISAM-Tabelle kann er mit anderen Feldern erstellt werden Union-Indizes

Bessere und schnellere Verarbeitung von Auto_Inkrementen

Wenn Sie die AUTO_INCREMENT-Spalte für eine Tabelle angeben, enthält das InnoDB-Tabellenhandle im Datenwörterbuch einen Zähler namens Autoinkrement-Zähler, der zum Zuweisen eines verwendet wird neuer Wert für die Spalte.


Der Auto-Inkrement-Zähler wird nur im Hauptspeicher und nicht auf der Festplatte gespeichert.

Informationen zur Algorithmusimplementierung dieses Rechners finden Sie unter


So funktioniert die Spalte AUTO_INCREMENT in InnoDB

Die spezifische Anzahl von Zeilen in der Tabelle

Wählen Sie count(*) aus der Tabelle aus. MyISAM liest einfach die Anzahl der gespeicherten Zeilen. Beachten Sie, dass die Operationen der beiden Tabellen gleich sind, wenn die count(*)-Anweisung Where-Bedingungen enthält 🎜> InnoDB speichert nicht die spezifische Anzahl von Zeilen in der Tabelle. Das heißt, wenn InnoDB „select count(*) from table“ ausführt, muss es die gesamte Tabelle scannen, um zu berechnen, wie viele Zeilen vorhanden sind

Sperre


Tabellensperre
Bietet Zeilensperre (Sperrung auf Zeilenebene) und ermöglicht nicht sperrendes Einlesen

SELECTs) konsistent mit dem Oracle-Typ. Die Zeilensperre der InnoDB-Tabelle ist nicht absolut. Wenn MySQL beim Ausführen einer SQL-Anweisung den zu scannenden Bereich nicht bestimmen kann, sperrt die InnoDB-Tabelle auch die gesamte Tabelle, z. B. update table set num=1, wobei der Name „%“ lautet. aaa%“


-->

Das obige ist der detaillierte Inhalt vonEine Erklärung der sechs Hauptunterschiede zwischen den MySQL-Speicher-Engines InnoDB und Myisam. 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