Heim Datenbank MySQL-Tutorial Was sind die Unterschiede zwischen MySQL-Speicher-Engines?

Was sind die Unterschiede zwischen MySQL-Speicher-Engines?

May 06, 2019 am 11:33 AM
innodb myisam

Der Unterschied zwischen Speicher-Engines in MySQL: Wenn man Innodb und Myisam als Beispiel nimmt, unterstützt erstere Transaktionen, erstere legt jedoch nicht Wert auf Vielseitigkeit und unterstützt erweiterte Funktionen, während erstere sich hauptsächlich auf die Leistung konzentriert unterstützt keine Volltextindizierung, und letztere unterstützt die Volltextindizierung usw.

Was sind die Unterschiede zwischen MySQL-Speicher-Engines?

MySQL unterstützt mehrere Speicher-Engines. Hier besprechen wir hauptsächlich einige häufig verwendete Speicher Motoren. Innodb, myisam

INNODB

INNODB-Indeximplementierung

Das Gleiche wie MyISAM ist, dass InnoDB auch B+Tree verwendet Diese Datenstruktur wird zur Implementierung des B-Tree-Index verwendet. Der große Unterschied besteht darin, dass die InnoDB-Speicher-Engine die Datenspeichermethode „Clustered Index“ verwendet, um den B-Tree-Index zu implementieren. Die sogenannte „Aggregation“ bedeutet, dass die Datenzeilen und benachbarten Schlüsselwerte kompakt zusammen gespeichert werden Beachten Sie, dass InnoDB nur die Datensätze einer Blattseite (16 KB) aggregieren kann (d. h. der Clustered-Index erfüllt einen bestimmten Bereich von Datensätzen), sodass Datensätze mit benachbarten Schlüsselwerten möglicherweise weit voneinander entfernt sind.

In InnoDB wird die Tabelle als indexorganisierte Tabelle bezeichnet. InnoDB erstellt einen B+Baum entsprechend dem Primärschlüssel (wenn kein Primärschlüssel vorhanden ist, wird stattdessen ein eindeutiger und nicht leerer Index ausgewählt. Wenn Ohne einen solchen Index definiert InnoDB implizit einen Primärschlüssel als Clustered-Index, und die Blattseiten speichern die Zeilendatensatzdaten der gesamten Tabelle. Die Blattknoten des Clustered-Index können auch als Datenseiten und Nicht-Blatt-Seiten bezeichnet werden Seiten können als spärlicher Index von Blattseiten betrachtet werden.

Die folgende Abbildung veranschaulicht die Implementierung des InnoDB-Clusterindex und spiegelt auch die Struktur einer InnoDB-Tabelle wider. Es ist ersichtlich, dass in InnoDB der Primärschlüsselindex und die Daten integriert und nicht getrennt sind.

Was sind die Unterschiede zwischen MySQL-Speicher-Engines?

Diese Implementierungsmethode verleiht InnoDB eine extrem hohe Leistung für den Abruf per Primärschlüssel. Sie können einen Clustered-Index gezielt auswählen, z. B. eine Mail-Tabelle, und Sie können eine Benutzer-ID zum Aggregieren von Daten auswählen. Auf diese Weise müssen Sie nur eine kleine Anzahl aufeinanderfolgender Datenseiten von der Festplatte lesen, um alle E-Mails eines zu erhalten Benutzer mit einer bestimmten ID, sodass keine zufälligen E/A-Vorgänge für das Lesen verstreuter Seiten erforderlich sind.

InnoDB ist eine E/A-Operation, die Innodb zum Lesen und Schreiben verwendet, um eine hohe Parallelität zu unterstützen.

Vollständiger Tabellenscan

Wenn InnoDB einen vollständigen Tabellenscan durchführt, ist dies nicht effizient, da InnoDB tatsächlich nicht sequenziell liest . Bei einem vollständigen Tabellenscan scannt InnoDB Seiten und Zeilen in der Reihenfolge der Primärschlüssel. Dies gilt für alle InnoDB-Tabellen, einschließlich fragmentierter Tabellen. Wenn die Primärschlüsselseitentabelle (die Seitentabelle, die Primärschlüssel und Zeilen speichert) nicht fragmentiert ist, ist ein vollständiger Tabellenscan recht schnell, da die Lesereihenfolge nahe an der physischen Speicherreihenfolge liegt. Wenn die Primärschlüsselseite jedoch fragmentiert ist, wird der Scan sehr langsam.

Sperre auf Zeilenebene

Bietet Zeilensperre (Sperrung auf Zeilenebene), bereitgestellt von Oracle Typkonsistentes, nicht sperrendes Lesen in SELECTs. Darüber hinaus ist die Zeilensperre der InnoDB-Tabelle nicht absolut. Wenn MySQL den zu scannenden Bereich beim Ausführen einer SQL-Anweisung nicht bestimmen kann, sperrt die InnoDB-Tabelle auch die gesamte Tabelle , wie zum Beispiel

update table set num=1 where name like “%aaa%”
Nach dem Login kopieren

MYISAM

Implementierung von MyISAM-Indizes

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. Die MyISAM-Indexdatei [.MYI (MYIndex)] und die Datendatei [.MYD (MYData)] sind getrennt. Die Indexdatei speichert nur den Zeiger (physischen Speicherort) der Seite, auf der sich der Datensatz befindet Diese Adressen und dann wird die Seite gelesen. Werfen wir zunächst einen Blick auf das Strukturdiagramm

Was sind die Unterschiede zwischen MySQL-Speicher-Engines?

Das obige Bild zeigt gut, dass die Blätter im Baum die physische Position der entsprechenden Zeile speichern. Durch diesen Wert kann die Speicher-Engine die Tabelle reibungslos abfragen und eine vollständige Datensatzzeile erhalten. Gleichzeitig speichert jede Blattseite auch einen Zeiger auf die nächste Blattseite. Dies erleichtert das Durchqueren der Reichweite von Blattknoten. Der Sekundärindex wird in der MyISAM-Speicher-Engine auf die gleiche Weise wie in der obigen Abbildung implementiert. Dies zeigt auch, dass die Indizierungsmethode von MyISAM „nicht geclustert“ ist, was im Gegensatz zum „Clustered-Index“ von Innodb steht

MyISAM liest den Index standardmäßig in den Speicher und arbeitet direkt im Speicher.

Sperre auf Tabellenebene

Zusammenfassung: Innodb legt Wert auf Vielseitigkeit und den Vergleich der unterstützten Elemente Erweiterte Funktionen Viele, Myisam konzentriert sich hauptsächlich auf die Leistung

Unterschiede

1. InnoDB unterstützt jedoch nicht jede SQL-Sprache in einer Transaktion Standardmäßig und automatisch übermittelt, wirkt sich dies auf die Geschwindigkeit aus. Daher ist es am besten, mehrere SQL-Anweisungen zwischen begin und commit einzufügen, um eine Transaktion zu bilden.

2 ist an den Index gebunden und muss vorhanden sein. Es muss ein Primärschlüssel vorhanden sein, und die Indizierung über den Primärschlüssel ist sehr effizient. Der Hilfsindex erfordert jedoch zwei Abfragen: Zuerst wird der Primärschlüssel abgefragt und dann werden die Daten über den Primärschlüssel abgefragt. Daher sollte der Primärschlüssel nicht zu groß sein, denn wenn der Primärschlüssel zu groß ist, werden auch andere Indizes groß. MyISAM ist ein nicht gruppierter Index, die Datendateien sind getrennt und der Index speichert den Zeiger der Datendatei. Primärschlüsselindizes und Sekundärindizes sind unabhängig.

3. InnoDB speichert nicht die spezifische Anzahl von Zeilen in der Tabelle. Beim Ausführen von „select count(*) from table“ ist ein vollständiger Tabellenscan erforderlich. MyISAM verwendet eine Variable, um die Anzahl der Zeilen in der gesamten Tabelle zu speichern. Wenn Sie die obige Anweisung ausführen, ist dies sehr schnell.

4 , während MyISAM den Volltextindex unterstützt. In Bezug auf die Abfrageeffizienz ist MyISAM höher;

Das obige ist der detaillierte Inhalt vonWas sind die Unterschiede zwischen MySQL-Speicher-Engines?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Was ist MySQL Innodb? Was ist MySQL Innodb? Apr 14, 2023 am 10:19 AM

InnoDB ist eine der Datenbank-Engines von MySQL und einer der Standards für Binärversionen von MySQL AB. Ein zweigleisiges Autorisierungssystem ist die GPL-Autorisierung, das andere ist proprietäre Software Genehmigung. InnoDB ist die bevorzugte Engine für Transaktionsdatenbanken und unterstützt Transaktionssicherheitstabellen (ACID). InnoDB unterstützt Sperren auf Zeilenebene, die die Parallelität weitgehend unterstützen können. Sperren auf Zeilenebene werden von der Speicher-Engine-Ebene implementiert.

Wie MySQL das InnoDB-Zeilenformat anhand von Binärinhalten erkennt Wie MySQL das InnoDB-Zeilenformat anhand von Binärinhalten erkennt Jun 03, 2023 am 09:55 AM

InnoDB ist eine Speicher-Engine, die Daten in Tabellen auf der Festplatte speichert, sodass unsere Daten auch nach dem Herunterfahren und Neustarten noch vorhanden sind. Der eigentliche Prozess der Datenverarbeitung findet im Speicher statt, daher müssen die Daten auf der Festplatte in den Speicher geladen werden. Wenn eine Schreib- oder Änderungsanforderung verarbeitet wird, muss auch der Inhalt im Speicher auf der Festplatte aktualisiert werden. Und wir wissen, dass die Geschwindigkeit beim Lesen und Schreiben auf die Festplatte sehr langsam ist, was sich um mehrere Größenordnungen vom Lesen und Schreiben im Speicher unterscheidet. Wenn wir also bestimmte Datensätze aus der Tabelle abrufen möchten, muss die InnoDB-Speicher-Engine lesen die Datensätze einzeln von der Festplatte löschen? Die von InnoDB verwendete Methode besteht darin, die Daten in mehrere Seiten aufzuteilen und Seiten als grundlegende Interaktionseinheit zwischen Festplatte und Speicher zu verwenden. Die Größe einer Seite in InnoDB beträgt im Allgemeinen 16

Wie man mit einer MySQL-Innodb-Ausnahme umgeht Wie man mit einer MySQL-Innodb-Ausnahme umgeht Apr 17, 2023 pm 09:01 PM

1. Führen Sie einen Rollback durch und installieren Sie MySQL neu. Um die Probleme beim Importieren dieser Daten von anderen Orten zu vermeiden, erstellen Sie zunächst eine Sicherungskopie der Datenbankdatei der aktuellen Bibliothek (/var/lib/mysql/location). Als nächstes deinstallierte ich das Perconaserver5.7-Paket, installierte das ursprüngliche alte 5.1.71-Paket neu, startete den MySQL-Dienst und er meldete Unknown/unsupportedtabletype:innodb und konnte nicht normal gestartet werden. 11050912:04:27InnoDB:Initializingbufferpool,size=384.0M11050912:04:27InnoDB:Complete

So lösen Sie Phantomlesungen in innoDB in MySQL So lösen Sie Phantomlesungen in innoDB in MySQL May 27, 2023 pm 03:34 PM

1. MySQL-Transaktionsisolationsstufe: Bei mehreren Transaktions-Parallelitätskonflikten können einige Probleme wie schmutziges Lesen, nicht wiederholbares Lesen und Phantomlesen auftreten, und innoDB löst sie im wiederholbaren Leseisolationsstufenmodus des Phantom-Lesens, 2. Was ist Phantom-Lesen? Das bedeutet, dass in derselben Transaktion die Ergebnisse, die wir erhalten, wenn wir denselben Bereich vorher und nachher zweimal abfragen, inkonsistent sind, wie in der ersten Transaktion gezeigt Zu diesem Zeitpunkt gibt es nur ein Datenelement, das die Bedingungen erfüllt. In der zweiten Transaktion wird eine Datenzeile eingefügt und bei der ersten Transaktion erneut abgefragt Beachten Sie, dass die ersten und zweiten Abfragen der ersten Transaktion identisch sind

Vergleich der Auswahl der MySQL-Speicher-Engine: Bewertung des InnoDB-, MyISAM- und Speicherleistungsindex Vergleich der Auswahl der MySQL-Speicher-Engine: Bewertung des InnoDB-, MyISAM- und Speicherleistungsindex Jul 26, 2023 am 11:25 AM

Vergleich der Auswahl der MySQL-Speicher-Engine: Bewertung des InnoDB-, MyISAM- und Speicherleistungsindex Einführung: In der MySQL-Datenbank spielt die Wahl der Speicher-Engine eine entscheidende Rolle für die Systemleistung und Datenintegrität. MySQL bietet eine Vielzahl von Speicher-Engines. Zu den am häufigsten verwendeten Engines gehören InnoDB, MyISAM und Memory. In diesem Artikel werden die Leistungsindikatoren dieser drei Speicher-Engines bewertet und anhand von Codebeispielen verglichen. 1. InnoDB-Engine InnoDB ist mein

Erläutern Sie InnoDB Volltext-Suchfunktionen. Erläutern Sie InnoDB Volltext-Suchfunktionen. Apr 02, 2025 pm 06:09 PM

Die Volltext-Suchfunktionen von InnoDB sind sehr leistungsfähig, was die Effizienz der Datenbankabfrage und die Fähigkeit, große Mengen von Textdaten zu verarbeiten, erheblich verbessern kann. 1) InnoDB implementiert die Volltext-Suche durch invertierte Indexierung und unterstützt grundlegende und erweiterte Suchabfragen. 2) Verwenden Sie die Übereinstimmung und gegen Schlüsselwörter, um den Booleschen Modus und die Phrasesuche zu unterstützen. 3) Die Optimierungsmethoden umfassen die Verwendung der Word -Segmentierungstechnologie, die regelmäßige Wiederaufbauung von Indizes und die Anpassung der Cache -Größe, um die Leistung und Genauigkeit zu verbessern.

So verwenden Sie MyISAM- und InnoDB-Speicher-Engines, um die MySQL-Leistung zu optimieren So verwenden Sie MyISAM- und InnoDB-Speicher-Engines, um die MySQL-Leistung zu optimieren May 11, 2023 pm 06:51 PM

MySQL ist ein weit verbreitetes Datenbankverwaltungssystem und verschiedene Speicher-Engines haben unterschiedliche Auswirkungen auf die Datenbankleistung. MyISAM und InnoDB sind die beiden am häufigsten verwendeten Speicher-Engines in MySQL. Sie haben unterschiedliche Eigenschaften und eine unsachgemäße Verwendung kann die Leistung der Datenbank beeinträchtigen. In diesem Artikel wird erläutert, wie Sie diese beiden Speicher-Engines verwenden, um die MySQL-Leistung zu optimieren. 1. MyISAM-Speicher-Engine MyISAM ist die am häufigsten verwendete Speicher-Engine für MySQL. Ihre Vorteile sind hohe Geschwindigkeit und geringer Speicherplatz. MyISA

Tipps und Strategien zur Verbesserung der Leseleistung der MySQL-Speicher-Engine: Vergleichende Analyse von MyISAM und InnoDB Tipps und Strategien zur Verbesserung der Leseleistung der MySQL-Speicher-Engine: Vergleichende Analyse von MyISAM und InnoDB Jul 26, 2023 am 10:01 AM

Tipps und Strategien zur Verbesserung der Leseleistung der MySQL-Speicher-Engine: Vergleichende Analyse von MyISAM und InnoDB Einführung: MySQL ist eines der am häufigsten verwendeten relationalen Open-Source-Datenbankverwaltungssysteme, das hauptsächlich zum Speichern und Verwalten großer Mengen strukturierter Daten verwendet wird. In Anwendungen ist die Leseleistung der Datenbank oft sehr wichtig, da Lesevorgänge in den meisten Anwendungen die Hauptoperationsart darstellen. Dieser Artikel konzentriert sich auf die Verbesserung der Leseleistung der MySQL-Speicher-Engine und konzentriert sich auf eine vergleichende Analyse von MyISAM und InnoDB, zwei häufig verwendeten Speicher-Engines.

See all articles