Die Hauptunterschiede sind folgende: 1. MySQL verwendet standardmäßig MyISAM. 2. MyISAM unterstützt keine Transaktionen, InnoDB jedoch schon. InnoDBs AUTOCOMMIT ist standardmäßig aktiviert, d. h. jede SQL-Anweisung wird standardmäßig in eine Transaktion gekapselt und automatisch festgeschrieben. Dies wirkt sich auf die Geschwindigkeit aus. Daher ist es am besten, mehrere SQL-Anweisungen zwischen Begin und Commit einzufügen, um eine Transaktion zur Übermittlung zu bilden. 3. InnoDB unterstützt das Sperren von Datenzeilen, während MyISAM das Sperren von Zeilen nicht unterstützt und nur das Sperren der gesamten Tabelle unterstützt. Das heißt, die Lesesperre und die Schreibsperre für dieselbe Tabelle von MyISAM schließen sich gegenseitig aus. Wenn MyISAM gleichzeitig liest und schreibt und sich sowohl Lese- als auch Schreibanforderungen in der Warteschlange befinden, hat die Standardschreibanforderung eine höhere Priorität, selbst wenn die Leseanforderung zuerst eintrifft. Daher ist MyISAM nicht für Situationen geeignet, in denen eine große Anzahl von Abfragen und Änderungen gleichzeitig vorhanden ist, da der Abfrageprozess für lange Zeit blockiert wird. Da MyISAM die Tabelle sperrt, kann ein zeitaufwändiger Lesevorgang andere Schreibprozesse behindern. 4. InnoDB unterstützt Fremdschlüssel, MyISAM jedoch nicht. 5. Der Primärschlüsselbereich von InnoDB ist größer, bis zu doppelt so groß wie der von MyISAM. 6. InnoDB unterstützt keine Volltextindizierung, MyISAM jedoch schon. Volltextindizierung bedeutet, dass für jedes Wort (außer Stoppwörtern) in char, varchar und text ein invertierter Index erstellt wird. Der Volltextindex von MyISAM ist eigentlich nutzlos, da er die chinesische Wortsegmentierung nicht unterstützt. Der Benutzer muss nach der Wortsegmentierung Leerzeichen hinzufügen und diese dann in die Datentabelle schreiben. Darüber hinaus werden Wörter mit weniger als 4 chinesischen Zeichen wie Stoppwörter ignoriert. 7. MyISAM unterstützt GIS-Daten, InnoDB jedoch nicht. Das heißt, MyISAM unterstützt die folgenden räumlichen Datenobjekte: Punkt, Linie, Polygon, Oberfläche usw. 8. Count(*) ohne where ist mit MyISAM viel schneller als mit InnoDB. Da MyISAM über einen integrierten Zähler verfügt, liest es bei count(*) direkt aus dem Zähler, während InnoDB die gesamte Tabelle scannen muss. Daher wird count(*) bei der Ausführung in InnoDB normalerweise von einer Where-Klausel begleitet, und die Where-Klausel muss andere Indexspalten als den Primärschlüssel enthalten. Warum wird hier „außerhalb des Primärschlüssels“ betont? Denn in InnoDB wird der Primärindex zusammen mit den Rohdaten gespeichert, während der Sekundärindex separat gespeichert wird und es einen Zeiger gibt, der auf den Primärschlüssel zeigt. Wenn Sie daher nur zählen (*), ist es schneller, den Sekundärindex zum Scannen zu verwenden, während der Primärschlüssel hauptsächlich dann nützlich ist, wenn der Index gescannt und gleichzeitig Rohdaten zurückgegeben werden. Zusatzwissen: Was bedeutet ENGINE=InnoDB und AUTO_INCREMENT in MySQL? Wie unten dargestellt: Tabelle „hui_user“ erstellen ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'Benutzertabellen-ID', `Benutzername` varchar(50) NOT NULL COMMENT 'Benutzername', `password` varchar(50) NOT NULL COMMENT 'Benutzerpasswort, MD5 verschlüsselt', `E-Mail` varchar(50) DEFAULT NULL, `Telefon` varchar(20) DEFAULT NULL, `question` varchar(100) DEFAULT NULL COMMENT 'Frage zur Passwortwiederherstellung', `answer` varchar(100) DEFAULT NULL COMMENT 'Antwort zum Abrufen des Passworts', `role` int(4) NOT NULL COMMENT 'Rolle 0-Administrator, 1-Normaler Benutzer', `create_time` datetime NICHT NULL KOMMENTAR 'Erstellungszeit', `update_time` datetime NICHT NULL KOMMENTAR 'Letzte Aktualisierungszeit', Primärschlüssel (`id`), EINZIGARTIGER SCHLÜSSEL `user_name_unique` (`username`) MIT BTREE ) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=utf8; In dieser SQL-Anweisung gibt es eine solche
Wofür die letzten drei Punkte sind, verstehe ich allerdings nicht ganz? 1. Ist ENGINE=InnoDB nicht die Standard-Engine? 2. AUTO_INCREMENT=22, ist das nicht eine automatische Inkrementierung? Warum Zahlen festlegen? 3. Ist utf8 nicht bereits in my.ini eingestellt? Ist ENGINE=InnoDB nicht die Standard-Engine? ——Ja, wenn Sie es nicht schreiben, ist es in Ordnung und der Standard wird verwendet. Ich schreibe es hier, weil Sie deutlich sehen können, was in dieser Anweisung zur Tabellenerstellung verwendet wird, und es ist auch eine gute Angewohnheit, es beim Erstellen einer Tabelle zu schreiben. AUTO_INCREMENT=22, ist das nicht eine automatische Inkrementierung? Warum Zahlen festlegen? ——Dies ist automatisch inkrementell. Wenn Sie hier eine Zahl festlegen, bedeutet dies, dass diese Anweisung automatisch von 22 an inkrementiert werden soll, wenn sie wächst. Ist utf8 nicht bereits in my.ini eingestellt? ——Obwohl dies in my.ini festgelegt wurde, legt es die Sprachkodierung von MySQL fest. Wenn es beim Erstellen hier nicht festgelegt wird, werden verstümmelte Zeichen angezeigt. Die Bereiche der beiden sind unterschiedlich. Beim Erstellen eines Formulars wird dieser Zeichensatz auf diese Tabelle angewendet. Es stellt den Zeichensatz der MySQL-Lebenslaufdatenbank-Datentabelle dar, der auf utf-8 festgelegt ist Der obige Artikel über den Unterschied zwischen MyISAM und InnoDB ist der gesamte Inhalt, den der Herausgeber mit Ihnen teilt. Ich hoffe, er kann Ihnen als Referenz dienen. Ich hoffe auch, dass Sie 123WORDPRESS.COM unterstützen. Das könnte Sie auch interessieren:
|
<<: So deinstallieren und installieren Sie Tomcat neu (mit Bildern und Text)
>>: js, um einen Ein- und Ausblendeffekt des Bildes zu erzielen
XMeter API bietet einen umfassenden Online-Schnit...
Inhaltsverzeichnis 0. Was ist Webpack 1. Einsatz ...
Temporäre MySQL-Tabellen sind sehr nützlich, wenn...
Manchmal müssen wir einige Befehle auf einem Remo...
Ein Stylesheet beschreibt, wie ein Dokument angez...
Durch das Hinzufügen des Attributs rel="nofo...
Karussell Die Grundidee ist: Im großen Container ...
Cerebro ist eine Weiterentwicklung des Elasticsea...
Bevor wir über die CSS-Priorität sprechen, müssen...
Zusammenfassung HTML: Element plus V-Umhang CSS: ...
In diesem Artikel wird der spezifische Code von V...
Vorwort: Während der Projektentwicklung stießen w...
1. Systemumgebung Die Systemversion nach dem Yum-...
Als ich vor kurzem mit einem Internet-Veteranen ü...
Definition und Verwendung Mithilfe von @media-Abf...