Lassen Sie uns über die Speicher-Engine in MySQL sprechen

Lassen Sie uns über die Speicher-Engine in MySQL sprechen

Grundlagen

In einer relationalen Datenbank entspricht jede Datentabelle einer Datei, und verschiedene Speicher-Engines erstellen unterschiedliche Tabellentypen.

Die Rolle der Speicher-Engine besteht darin, anzugeben, wie die Datentabelle Daten speichert, wie Indizes für die gespeicherten Daten erstellt werden und wie die Implementierung von Technologien wie Aktualisierung und Abfrage unterstützt wird.

In Datenbanken wie Oracle und SqlServer wird nur eine Speicher-Engine unterstützt, daher sind ihre Datenspeicherverwaltungsmechanismen gleich. MySQL bietet mehrere Speicher-Engines. Benutzer können je nach Bedarf unterschiedliche Speicher-Engines für Datentabellen auswählen. Benutzer können auch je nach Bedarf ihre eigenen Speicher-Engines schreiben.

Beispielsweise können Sie den Typ „txt“ bei der Verarbeitung von Textdateien und den Typ „png“ bei der Verarbeitung von Bildern verwenden.

Speicher-Engine

MySQL unterstützt mehrere Speicher-Engines. Verwenden Sie show engines um die unterstützten Speicher-Engines anzuzeigen.

mysql> Engines anzeigen;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine | Support | Kommentar | Transaktionen | XA | Speicherpunkte |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| InnoDB | STANDARD | Unterstützt Transaktionen, Zeilensperren und Fremdschlüssel | JA | JA | JA |
| MRG_MYISAM | JA | Sammlung identischer MyISAM-Tabellen | NEIN | NEIN | NEIN |
| SPEICHER | JA | Hash-basiert, im Speicher abgelegt, nützlich für temporäre Tabellen | NEIN | NEIN | NEIN |
| BLACKHOLE | JA | /dev/null-Speicher-Engine (alles, was Sie hineinschreiben, verschwindet) | NEIN | NEIN | NEIN |
| MyISAM | JA | MyISAM-Speicher-Engine | NEIN | NEIN | NEIN |
| CSV | JA | CSV-Speicher-Engine | NEIN | NEIN | NEIN |
| ARCHIV | JA | Archivspeicher-Engine | NEIN | NEIN | NEIN |
| PERFORMANCE_SCHEMA | JA | Leistungsschema | NEIN | NEIN | NEIN |
| FEDERATED | NO | Föderierte MySQL-Speicher-Engine | NULL | NULL | NULL |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
9 Zeilen im Satz (0,00 Sek.)

MySQL>

InnoDB

Die InnoDB-Speicher-Engine ist die Standard-Speicher-Engine von MySQL. Sie unterstützt Transaktionsvorgänge und ist hauptsächlich für Anwendungen zur Online-Transaktionsverarbeitung (OLTP) konzipiert.

Zu seinen Funktionen gehören das Zeilensperrendesign, die Unterstützung von Fremdschlüsseln und eine Oracle-ähnliche Leseunterstützung ohne Sperren, d. h. der Standardlesevorgang generiert keine Sperren. Die InnoDB-Speicher-Engine platziert Daten in einem logischen Tabellenbereich, der von der InnoDB-Speicher-Engine selbst wie eine Blackbox verwaltet wird.

Ab MySQL 4.1 (einschließlich 4.1) kann jede Tabelle der InnoDB-Speicher-Engine in einer separaten ibd-Datei gespeichert werden. Darüber hinaus unterstützt die InnoDB-Speicher-Engine die Verwendung von Raw-Geräten (Row Disks) zum Erstellen ihres Tablespace. InnoDB erreicht eine hohe Parallelität durch die Verwendung von Multi-Version Concurrency Control (MVCC) und implementiert vier SQL-Standardisolationsebenen, wobei die REPEATABLE-Ebene die Standardebene ist. Außerdem wird eine Strategie namens Netx-Key-Locking verwendet, um Phantomlesen zu vermeiden.

Darüber hinaus bietet die InnoDB-Speicher-Engine auch Hochleistungs- und Hochverfügbarkeitsfunktionen wie Einfügepuffer, Doppelschreiben, adaptiven Hash-Index und Vorauslesen. Für die Speicherung von Daten in der Tabelle verwendet die InnoDB-Speicher-Engine einen Cluster-Ansatz. Jede Tabelle wird in der Reihenfolge des Primärschlüssels gespeichert. Wenn der Primärschlüssel beim Definieren der Tabelle nicht explizit angegeben wird, generiert die InnoDB-Speicher-Engine für jede Zeile eine 6-Byte-Zeilen-ID (ROWID) und verwendet diese als Primärschlüssel. Die InnoDB-Speicher-Engine ist die am häufigsten verwendete Engine in MySQL-Datenbanken. Die erfolgreiche Anwendung bei Facebook, Google, Yahoo und anderen Unternehmen hat bewiesen, dass die InnoDB-Speicher-Engine über eine hohe Verfügbarkeit, hohe Leistung und hohe Skalierbarkeit verfügt. Das Beherrschen und Verstehen der zugrunde liegenden Implementierung erfordert ebenfalls Zeit und technisches Know-how.

Wenn Sie mehr über das Funktionsprinzip, die Implementierung und die Anwendung der InnoDB-Speicher-Engine erfahren möchten, können Sie das Buch „MySQL Technology Insider: InnoDB Storage Engine“ zu Rate ziehen.

MeinIsAM

Es unterstützt keine Transaktionen oder Tabellensperrendesigns, unterstützt jedoch die Volltextindizierung. Es wird hauptsächlich für einige OLAP-Datenbankanwendungen verwendet und war vor MySQL 5.5.8 die Standardspeicher-Engine (mit Ausnahme der Windows-Version). Ein großer Unterschied zwischen Datenbanksystemen und Dateisystemen ist die Unterstützung von Transaktionen. Die MyISAM-Speicher-Engine unterstützt keine Transaktionen.

Im Grunde ist dies nicht schwer zu verstehen. Benötigen Benutzer Transaktionen in allen Anwendungen? Wenn in einem Data Warehouse keine ETL-Operationen stattfinden, ist dann immer noch Transaktionsunterstützung für einfache Berichtsabfragen erforderlich? Ein weiteres einzigartiges Merkmal der MyISAM-Speicher-Engine besteht darin, dass ihr Pufferpool im Gegensatz zu den meisten Datenbanken nur Indexdateien und keine Datendateien zwischenspeichert.

NDB

Im Jahr 2003 erwarb MySQL AB die NDB-Speicher-Engine von Sony Ericsson.

Die NDB-Speicher-Engine ist eine Cluster-Speicher-Engine, ähnlich dem RAC-Cluster von Oracle. Im Gegensatz zur Share-Everything-Struktur von Oracle RAC handelt es sich bei der Struktur jedoch um eine Share-Nothing-Clusterarchitektur, sodass ein höheres Maß an Hochverfügbarkeit bereitgestellt werden kann.

Die Besonderheit der NDB-Speicher-Engine besteht darin, dass alle Daten im Speicher abgelegt werden (ab Version 5.1 können nicht indizierte Daten auf der Festplatte gespeichert werden), sodass Primärschlüsselsuchen extrem schnell erfolgen und NDB-Datenspeicherknoten online hinzugefügt werden können, um die Datenbankleistung linear zu verbessern.

Es ist ersichtlich, dass die NDB-Speicher-Engine ein hochverfügbares, leistungsstarkes und hoch skalierbares Datenbank-Clustersystem ist, das auch auf OLTP-Datenbankanwendungstypen ausgerichtet ist.

Erinnerung

Wie der Name schon sagt, werden Daten in der Memory-Speicher-Engine im Speicher gespeichert.

Bei einem Neustart oder Absturz der Datenbank gehen die Daten in der Tabelle verloren. Es eignet sich sehr gut zum Speichern temporärer Tabellen mit temporären Daten in OLTP-Datenbankanwendungen und kann auch als Dimensionstabelle des Data Warehouse in OLAP-Datenbankanwendungen verwendet werden.

Die Speicher-Speicher-Engine verwendet standardmäßig Hash-Indizes anstelle der bekannten B+-Baumindizes.

Infobright

Speicher-Engines von Drittanbietern.

Seine Besonderheit besteht darin, dass die Speicherung auf Spalten statt auf Zeilen basiert, weshalb es sich sehr gut für OLAP-Datenbankanwendungen eignet.

Die offizielle Website ist http://www.infobright.org/. Dort finden Sie zahlreiche erfolgreiche Data-Warehouse-Fälle zur Analyse.

NTSE

Eine von NetEase für den internen Gebrauch entwickelte Speicher-Engine.

Die aktuelle Version unterstützt keine Transaktionen, bietet aber Funktionen wie Komprimierung und Caching auf Zeilenebene. Speicherorientierte Transaktionsunterstützung wird in naher Zukunft implementiert.

SCHWARZES LOCH

Die gesamte Speicher-Engine kann auf die Distributions-Masterbibliothek bei der Master-Slave-Replikation angewendet werden.

Konfigurations-Engine

Tabelle erstellen und angeben

Verwenden Sie engine nach der Anweisung zur Tabellenerstellung, um die Speicher-Engine anzugeben.

Tabelle erstellen Tabellenname (ID int, Name char) Engine = Speicher-Engine (Standard innodb);

Im Folgenden wird unter Verwendung der Speicher-Speicher-Engine eine temporäre Tabelle mit dem Namen „Temp“ erstellt.

mysql> Tabelle temp erstellen(id int) engine=memory;
Abfrage OK, 0 Zeilen betroffen (0,01 Sek.)

mysql> show create table temp; # Erstellungsinformationen anzeigen+-------+------------------------------------------------------------------------------------------+
| Tabelle | Tabelle erstellen |
+-------+------------------------------------------------------------------------------------------+
| temp | TABELLE ERSTELLEN `temp` (
 `id` int(11) STANDARD NULL
) ENGINE=Speicher Standard Zeichensatz=latin1 |
+-------+------------------------------------------------------------------------------------------+
1 Zeile im Satz (0,00 Sek.)

MySQL>

Die Daten im Speicher werden gelöscht, wenn der MySQL-Dienst beendet wird.

Die Eigenschaft der Blackhole-Speicher-Engine besteht darin, dass unabhängig davon, wie viele Datensätze eingefügt werden, diese niemals in der Tabelle gespeichert werden.

Konfigurationszuweisung

In der Konfigurationsdatei können Sie beim Erstellen einer Tabelle auch die Speicher-Engine angeben.

[mysqld]
#Die Standard-Speicher-Engine, die beim Erstellen einer neuen Tabelle verwendet wird default-storage-engine=INNODB

Dateistruktur

Hier nehmen wir InnoDB als Beispiel. Wir erstellen zuerst eine Studententabelle und sehen uns dann ihre Dateistruktur an.

mysql> Tabelle erstellen Student (ID int) Engine = innodb;
Abfrage OK, 0 Zeilen betroffen (0,02 Sek.) 

student.frm speichert die Tabellenstruktur, wie Felder und andere Informationen

student.ibd speichert Tabellendaten wie Datensätze und andere Informationen

Oben sind die Details der Speicher-Engine in MySQL aufgeführt. Weitere Informationen zur MySQL-Speicher-Engine finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Erste Schritte mit der Ausführungs-Engine von SQL Server
  • Vor- und Nachteile gängiger MySQL-Speicher-Engines
  • Ändern Sie die MySQL-Datenbank-Engine in InnoDB
  • Kenntnisse über die MySQL Memory-Speicher-Engine
  • Detaillierte Erklärung der Speicher-Engine in MySQL
  • MySQL wählt die richtige Speicher-Engine
  • Einstellen der Engine MyISAM/InnoDB beim Erstellen einer Datentabelle in MySQL
  • Beschreiben Sie kurz die MySQL InnoDB-Speicher-Engine
  • So schreiben Sie Ihre eigene SQL-Ausführungs-Engine

<<:  Vergleich der Vorteile von vue3 und vue2

>>:  So ändern Sie die Quellenliste von Ubuntu 18.04 zum Alibaba- oder Tsinghua-Spiegel

Artikel empfehlen

HTML verwendet reguläre Ausdrücke zum Testen von Tabellenbeispielen

Hier ist ein Beispielcode für die Verwendung regu...

Ein zeitaufwändiger Fehlerbehebungsprozess für einen Docker-Fehler

Inhaltsverzeichnis Herkunft Umweltinformationen F...

So stellen Sie MySQL 5.7- und 8.0-Master-Slave-Cluster mit Docker bereit

> MySQL 5.7 Cluster Master und Slave bereitste...

Zusammenfassung gängiger Befehle zur Linux-Benutzer- und Gruppenverwaltung

Dieser Artikel fasst die allgemeinen Befehle zur ...

MySQL-Datenbankoperationen und Datentypen

Inhaltsverzeichnis 1. Datenbankbetrieb 1.1 Datenb...

Adaptive HTML-Tabellenmethode

<body style="scroll:no"> <Tabe...

So lösen Sie das Problem des Randkollapses in CSS

Betrachten wir zunächst drei Situationen, in dene...

JavaScript-Verlaufsobjekt erklärt

Inhaltsverzeichnis 1. Routennavigation 2. API zur...

Grundlegende Verwendung von Javascript-Array-Includes und -Reduces

Inhaltsverzeichnis Vorwort Array.Prototyp.enthält...