Der Unterschied: 1. InnoDB unterstützt Transaktionen, MyISAM jedoch nicht. Bei InnoDB wird jede SQL-Anweisung standardmäßig als Transaktion gekapselt und automatisch festgeschrieben, was sich auf die Geschwindigkeit auswirkt. Daher ist es am besten, mehrere SQL-Anweisungen zwischen Begin und Commit einzufügen, um eine Transaktion zu bilden. 2. InnoDB unterstützt Fremdschlüssel, MyISAM nicht. Die Konvertierung einer InnoDB-Tabelle mit Fremdschlüsseln nach MYISAM schlägt fehl. 3. InnoDB ist ein Clustered-Index und verwendet B+Tree als Indexstruktur. Die Datendatei ist an den (Primärschlüssel-)Index gebunden (die Tabellendatendatei selbst ist eine durch B+Tree organisierte Indexstruktur). Es muss einen Primärschlüssel geben, und die Effizienz des Primärschlüsselindex ist sehr hoch. Der Hilfsindex erfordert jedoch zwei Abfragen: zuerst die Abfrage des Primärschlüssels und dann die Abfrage der Daten über den Primärschlüssel. Daher sollte der Primärschlüssel nicht zu groß sein, denn wenn der Primärschlüssel zu groß ist, sind auch andere Indizes groß. MyISAM ist ein nicht gruppierter Index und verwendet ebenfalls B+Tree als Indexstruktur. Index- und Datendateien sind getrennt und der Index speichert den Zeiger auf die Datendatei. Der Primärschlüsselindex und die Sekundärindizes sind unabhängig. Mit anderen Worten, die Blattknoten des Primärschlüsselindex des B + -Baums von InnoDB sind Datendateien und die Blattknoten des Hilfsindex sind die Werte des Primärschlüssels, während die Blattknoten des Primärschlüsselindex und des Hilfsindex des B + -Baums von MyISAM beide Adresszeiger auf Datendateien sind. 4. InnoDB speichert nicht die genaue Anzahl der Zeilen in der Tabelle. Beim Ausführen von select count(*) from table muss die gesamte Tabelle gescannt werden. MyISAM verwendet eine Variable, um die Anzahl der Zeilen in der gesamten Tabelle zu speichern. Wenn Sie die obige Anweisung ausführen, müssen Sie nur die Variable lesen, was sehr schnell ist (beachten Sie, dass keine WHERE-Bedingungen hinzugefügt werden können). Warum hat InnoDB diese Variable nicht? Aufgrund der transaktionalen Natur von InnoDB ist die Anzahl der Zeilen in der Tabelle gleichzeitig für verschiedene Transaktionen unterschiedlich. Daher berechnet die Zählstatistik die Anzahl der Zeilen, die für die aktuelle Transaktion gezählt werden können, anstatt die Gesamtzahl der Zeilen für eine schnelle Abfrage zu speichern. InnoDB versucht, den kleinstmöglichen Index zu durchlaufen, sofern der Optimierer es nicht anweist, einen anderen Index zu verwenden. Wenn der sekundäre Index nicht vorhanden ist, versucht InnoDB auch, andere gruppierte Indizes zu durchlaufen. 5. InnoDB unterstützt keine Volltextindizierung, MyISAM hingegen schon. MyISAM ist im Hinblick auf die Abfrageeffizienz im Bereich der Volltextindizierung schneller. PS: InnoDB ab 5.7 unterstützt Volltextindizierung. 6. MyISAM-Tabellen können komprimiert und abgefragt werden 7. InnoDB unterstützt Sperren auf Tabellen- und Zeilenebene (Standard), während MyISAM Sperren auf Tabellenebene unterstützt Die Zeilensperren von InnoDB werden auf Indizes und nicht auf physischen Zeilendatensätzen implementiert. Die Konsequenz ist, dass wenn der Zugriff nicht auf den Index trifft, die Zeilensperre nicht verwendet werden kann und zu einer Tabellensperre degeneriert. 8. InnoDB-Tabellen müssen einen Primärschlüssel haben (wenn der Benutzer keinen angibt, wird selbst einer gefunden oder generiert). MyISAM hat dagegen keinen. 9. Innodb-Speicherdateien sind frm und ibd, während Myisam frm, MYD, MYI ist Innodb: frm ist die Tabellendefinitionsdatei, ibd ist die Datendatei Myisam: frm ist die Tabellendefinitionsdatei, myd ist die Datendatei, myi ist die Indexdatei So wählen Sie: 1. Ob Transaktionen unterstützt werden. Wenn ja, wählen Sie bitte InnoDB. Wenn nicht, können Sie MyISAM in Betracht ziehen. 2. Wenn die meisten Abfragen in der Tabelle Leseabfragen sind, können Sie MyISAM in Betracht ziehen. Wenn sowohl Lese- als auch Schreibabfragen vorhanden sind, verwenden Sie bitte InnoDB. 3. Nach einem Systemabsturz ist es schwieriger, MyISAM wiederherzustellen. Ist das akzeptabel? 4. Ab MySQL Version 5.5 ist Innodb die Standard-Engine von MySQL (vorher war es MyISAM), was zeigt, dass seine Vorteile für alle offensichtlich sind. Wenn Sie nicht wissen, was Sie verwenden sollen, verwenden Sie InnoDB, es ist zumindest nicht schlecht. Warum empfiehlt InnoDB die Verwendung der Auto-Increment-ID als Primärschlüssel? Antwort: Die Auto-Increment-ID stellt sicher, dass der B+-Index bei jeder Einfügung von rechts erweitert wird. Dadurch wird ein häufiges Zusammenführen und Aufteilen von B+-Bäumen vermieden (im Vergleich zur Verwendung von UUID). Wenn Sie Zeichenfolgen-Primärschlüssel und zufällige Primärschlüssel verwenden, werden die Daten zufällig eingefügt, was ineffizient ist. Vier Hauptfunktionen der InnoDB-Engine Puffer einfügen, doppeltes Schreiben, adaptiver Hash-Index (ahi), Vorauslesen Oben finden Sie ausführliche Informationen zum Unterschied zwischen MySQL MyISAM und InnoDB. Weitere Informationen zu MySQL MyISAM und InnoDB finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM! Das könnte Sie auch interessieren:
|
<<: Führen Sie die Schritte aus, um den Fehler 403 Forbidden in Nginx zu beheben.
>>: Vue implementiert die Verpackung und Verwendung von Komponenten zur Kontrolle der Warenanzahl
Normalerweise müssen wir uns bei der Projektentwic...
Warum müssen wir einen privaten Nexus-Server erst...
Vorwort Beim Installieren der ausführbaren Datei ...
Inhaltsverzeichnis Hintergrund Frage Problemanaly...
Dieser Artikel beschreibt, wie mysql5.7.16 aus de...
Inhaltsverzeichnis 1. Komponentenorganisation 2. ...
Ergebnisse erzielen Bauen Sie zunächst mit HTML e...
Der lokale Windows-Remotedesktop stellt eine Verb...
Inhaltsverzeichnis 1. Redo-Log (Transaktionsproto...
Der vollständige Name von Blog sollte Weblog sein...
Die vollständige Syntax der Select-Anweisung laut...
SSH-Secure-Shell, ermöglicht sichere Remote-Anmel...
Im Allgemeinen werden Java-Lernprogramme und Bere...
Crontab installieren yum install crontabs CentOS ...
Ein Textfeld mit Dropdown-Liste ermöglicht es Ben...