Heim >Schlagzeilen >MySQL ist ein Muss für die PHP-Entwicklung. Kennen Sie den Unterschied zwischen MyISAM und InnoDB in MySQL?
Unterschiede 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 Datei
.frm 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
SELECT UPDATE, INSERT, Löschvorgänge
Wenn Sie eine große Anzahl von SELECTs ausführen, ist MyISAM die bessere Wahl
1 Wenn Ihre Daten aus Leistungsgründen eine große Anzahl von INSERT- oder UPDATE-Vorgängen durchführen, Sie sollten Folgendes tun: Bei Verwendung der InnoDB-Tabelle
2. Aus der Tabelle löschen, erstellt InnoDB die Tabelle nicht neu, sondern löscht sie Zeile für Zeile.
3.LOAD TABLE FROM MASTER funktioniert nicht für InnoDB. 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 die zusätzliche InnoDB Verwendete Funktionen (z. B. Fremdschlüssel) Tabellen sind nicht anwendbar
Operationen auf AUTO_INCREMENT
Interne Verarbeitung einer AUTO_INCREMEN-Spalte pro Tabelle.
MyISAM aktualisiert diese Spalte automatisch für INSERT- und UPDATE-Vorgänge. 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 eingerichtet werden Felder Union-Indizes
Bessere und schnellere Handhabung von Auto_Inkrementen
Wenn Sie eine 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 verwendet wird einen neuen 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
Verwendung der Spalte AUTO_INCREMENT in InnoDB Die spezifische Anzahl der Zeilen in der Arbeitstabelle
Wählen Sie count(*) aus der Tabelle aus. MyISAM liest einfach die Anzahl der gespeicherten Zeilen. Beachten Sie, dass die Operationen ausgeführt werden, wenn die count(*)-Anweisung die Where-Bedingung enthält der beiden Tabellen sind gleich
Tabellensperre
SELECTs im Einklang mit dem Oracle-Typ , ist die Zeilensperre der InnoDB-Tabelle 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 „ %aaa%“