Heim >Datenbank >MySQL-Tutorial >Was ist der Unterschied zwischen innodb und myisam in MySQL?
Unterschiede: 1. MyISAM unterstützt keine Transaktionen, InnoDB jedoch. 2. InnoDB unterstützt das Sperren von Datenzeilen, während MyISAM kein Zeilensperren unterstützt, sondern nur das Sperren der gesamten Tabelle. 3. InnoDB unterstützt Fremdschlüssel, MyISAM jedoch nicht. 4. Der Primärschlüsselbereich von InnoDB ist größer und bis zu doppelt so groß wie der von MyISAM.
Der Unterschied zwischen MyISAM und InnoDB
MySQL verwendet standardmäßig MyISAM.
MyISAM unterstützt keine Transaktionen, InnoDB jedoch schon. InnoDBs AUTOCOMMIT ist standardmäßig aktiviert, das heißt, jede SQL-Anweisung wird standardmäßig in eine Transaktion gekapselt und automatisch übermittelt. Dies wirkt sich auf die Geschwindigkeit aus. Daher ist es am besten, mehrere SQL-Anweisungen zwischen Beginn und Festschreibung anzuzeigen, um eine Transaktion zu bilden. Geh und sende.
InnoDB unterstützt das Sperren von Datenzeilen, während MyISAM kein Zeilensperren unterstützt, sondern nur das Sperren der gesamten Tabelle. Das heißt, Lesesperren und Schreibsperren für dieselbe MyISAM-Tabelle schließen sich gegenseitig aus, wenn sich sowohl Leseanforderungen als auch Schreibanforderungen in der Warteschlange befinden, auch wenn die Standardschreibanforderung eine höhere Priorität hat Die Leseanforderung kommt zuerst an, daher ist MyISAM nicht für Situationen geeignet, in denen eine große Anzahl von Abfragen und Änderungen gleichzeitig vorhanden sind, da der Abfrageprozess für lange Zeit blockiert wird. Da es sich bei MyISAM um eine Sperrtabelle handelt, werden durch einen zeitaufwändigen Lesevorgang andere Schreibprozesse ausgehungert.
InnoDB unterstützt Fremdschlüssel, MyISAM jedoch nicht.
Der Primärschlüsselbereich von InnoDB ist größer, bis zu doppelt so groß wie der von MyISAM.
InnoDB unterstützt keine Volltextindizierung, MyISAM jedoch schon. Unter Volltextindizierung versteht man die Erstellung eines invers sortierten Indexes für jedes Wort in char, varchar und Text (mit Ausnahme von Stoppwörtern). Der Volltextindex von MyISAM ist eigentlich nutzlos, da er die Segmentierung chinesischer Wörter nicht unterstützt. Außerdem müssen Wörter mit weniger als 4 chinesischen Zeichen wie Stoppwörter ignoriert werden.
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.
Count(*) without where verwendet MyISAM viel schneller als InnoDB. Da MyISAM über einen integrierten Zähler verfügt, liest es beim Zählen (*) direkt vom Zähler, während InnoDB die gesamte Tabelle scannen muss. Wenn count(*) auf InnoDB ausgeführt wird, wird daher im Allgemeinen von where begleitet, und where muss andere Indexspalten als den Primärschlüssel enthalten. Warum liegt hier ein besonderer Schwerpunkt auf „außer dem Primärschlüssel“? Denn der Primärindex in InnoDB wird zusammen mit den Rohdaten gespeichert, während der Sekundärindex separat gespeichert wird und dann ein Zeiger auf den Primärschlüssel vorhanden ist. Wenn es sich also nur um count (*) handelt, ist es schneller, den Sekundärindex zum Scannen zu verwenden, während der Primärschlüssel hauptsächlich zum Scannen des Index und gleichzeitig zur Rückgabe von Rohdaten verwendet wird.
Empfohlenes Lernen: MySQL-Tutorial
Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen innodb und myisam in MySQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!