Heim  >  Artikel  >  Datenbank  >  Der Unterschied zwischen MyISAM und InnoDB in MySQL [ausführliche Erklärung]

Der Unterschied zwischen MyISAM und InnoDB in MySQL [ausführliche Erklärung]

藏色散人
藏色散人Original
2018-09-10 17:34:191101Durchsuche

Dieser Artikel stellt hauptsächlich den Unterschied zwischen MyISAM und InnoDB in MySQL vor. Ich hoffe, er wird Freunden in Not helfen!

Der Unterschied zwischen MyISAM und InnoDB:

1. MySQL verwendet standardmäßig MyISAM.

2.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.

3.InnoDB unterstützt das Sperren von Datenzeilen, während MyISAM kein Zeilensperren unterstützt, sondern nur das Sperren der gesamten Tabelle. Im Augenblick Die Lesesperre und die Schreibsperre für dieselbe MyISAM-Tabelle schließen sich gegenseitig aus. Wenn sich in der Warteschlange sowohl Lese- als auch Schreibanforderungen befinden, hat MyISAM eine höhere Priorität, selbst wenn die Leseanforderung kommt zuerst an, also MyISAM eignet sich nicht für Situationen, in denen eine große Anzahl von Abfragen und Änderungen gleichzeitig vorhanden sind, da der Abfragevorgang für lange Zeit blockiert wird. Da es sich bei MyISAM um eine Sperrtabelle handelt, werden durch einen zeitaufwändigen Lesevorgang andere Schreibprozesse ausgehungert.

4.InnoDB unterstützt Fremdschlüssel, MyISAM jedoch nicht.

5. InnoDB hat einen größeren Primärschlüsselbereich, der bis zu doppelt so groß ist wie der von MyISAM.

6.InnoDB unterstützt keine Volltextindizierung, MyISAM jedoch schon. Der Volltextindex bezieht sich auf char, Erstellen Sie für jedes Wort in Varchar und Text einen invers sortierten Index (außer Stoppwörter). Der Volltextindex von MyISAM ist eigentlich nutzlos, da er die chinesische Wortsegmentierung nicht unterstützt. Der Benutzer muss nach der Wortsegmentierung Leerzeichen hinzufügen. Das Raster wird dann in die Datentabelle geschrieben und Wörter mit weniger als 4 chinesischen Zeichen werden 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 wo verwendet MyISAM viel schneller als InnoDB. Weil In MyISAM ist ein Zähler integriert, bei dem count(*) direkt vom Zähler gelesen wird, während InnoDB die gesamte Tabelle scannen muss. Daher ist dies im Allgemeinen der Fall, wenn count(*) auf InnoDB ausgeführt wird Es muss von where begleitet werden und where muss andere Indexspalten als den Primärschlüssel enthalten. Warum liegt hier ein besonderer Schwerpunkt auf „außer dem Primärschlüssel“? Weil der Primärindex in InnoDB derselbe ist wie der Rohindex Die Daten werden zusammen gespeichert, während der Sekundärindex separat gespeichert wird und dann ein Zeiger auf den Primärindex vorhanden ist Schlüssel. Wenn es sich also nur um count(*) handelt, ist es schneller, den Sekundärindex zum Scannen zu verwenden, während der Primärschlüssel beim Scannen des Index hauptsächlich Rohdaten zurückgibt. Der Effekt ist bei der Verwendung von Daten größer.

Weitere MySQL-Kenntnisse finden Sie im MySQL-Video-Tutorial oder im MySQL-Handbuch!

Das obige ist der detaillierte Inhalt vonDer Unterschied zwischen MyISAM und InnoDB in MySQL [ausführliche Erklärung]. 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