Kenntnisse über die MySQL Memory-Speicher-Engine

Kenntnisse über die MySQL Memory-Speicher-Engine

Wissenspunkte zur Speicher-Storage-Engine

Die Speicher-Engine wird in der täglichen Arbeit selten verwendet. In einigen MySQL-Syntaxen wird jedoch die Speichertabelle der Speicher-Engine verwendet. Sie weist die folgenden Merkmale auf:

1. Die Syntax zum Erstellen einer Speichertabelle lautet „create table … engine=memory“.

2. Die Daten dieser Tabelle werden im Speicher abgelegt und beim Neustart des Systems gelöscht, die Tabellenstruktur bleibt jedoch bestehen.

2. Die Daten und der Index der Speicher-Engine sind getrennt. Tabellen der Speicher-Engine können auch Primärschlüssel haben. Die Primärschlüssel-ID speichert den Speicherort aller Daten. Die Primärschlüssel-ID ist ein Hash-Index und die Schlüssel im Index sind nicht fortlaufend.

Diese Datenorganisationsform, bei der Daten und Indizes separat gespeichert werden, wird als „Heap-organisierte Tabelle“ bezeichnet und unterscheidet sich von der „Index-organisierten Tabelle“ der Innodb-Speicher-Engine.

Der Unterschied zwischen Innodb und Speicher-Storage-Engines

1. Die Datenspeicherreihenfolge der Memory-Speicher-Engine entspricht der Einfügereihenfolge, während die Datenspeicherreihenfolge der InnoDB-Speicher-Engine entsprechend dem gruppierten Index angeordnet ist. Hier sind einige Beispiele:

mysql> Tabelle erstellen t1(id int Primärschlüssel, c int) Engine=Speicher;
Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)

mysql> in t1 einfügen: Werte(1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(0,0);
Abfrage OK, 10 Zeilen betroffen (0,00 Sek.)
Datensätze: 10 Duplikate: 0 Warnungen: 0

mysql> wähle * aus t1;
+----+------+
| Ich würde | c |
+----+------+
| 1 | 1 |
| 2 | 2 |
| 3 | 3 |
| 4 | 4 |
| 5 | 5 |
| 6 | 6 |
| 7 | 7 |
| 8 | 8 |
| 9 | 9 |
| 0 | 0 |
+----+------+
10 Zeilen im Satz (0,00 Sek.)


mysql> Tabelle erstellen t2(id int Primärschlüssel, c int) Engine=innodb;
Abfrage OK, 0 Zeilen betroffen (0,01 Sek.)

mysql> in t2 Werte einfügen (1,1), (2,2), (3,3), (4,4), (5,5), (6,6), (7,7), (8,8), (9,9), (0,0);
Abfrage OK, 10 Zeilen betroffen (0,00 Sek.)
Datensätze: 10 Duplikate: 0 Warnungen: 0


mysql> wähle * aus t2;
+----+------+
| Ich würde | c |
+----+------+
| 0 | 0 |
| 1 | 1 |
| 2 | 2 |
| 3 | 3 |
| 4 | 4 |
| 5 | 5 |
| 6 | 6 |
| 7 | 7 |
| 8 | 8 |
| 9 | 9 |
+----+------+
10 Zeilen im Satz (0,00 Sek.)

Es ist ersichtlich, dass in den Ergebnissen der Speicher-Speicher-Engine der Datensatz (0,0) am Ende steht, was mit der Einfügereihenfolge übereinstimmt, während sie in den Ergebnissen der InnoDB-Speicher-Engine in der Reihenfolge der Datensätze angeordnet sind.

2. Wenn die Datendatei eine Lücke aufweist, muss die InnoDB-Speicher-Engine die Daten an der angegebenen Stelle einfügen, während die Memory-Speicher-Engine die Daten einfügen kann, solange sie eine Lücke findet.

3. Wenn sich der Datenspeicherort ändert, muss die Speicher-Speicher-Engine alle Indizes ändern, während die InnoDB-Speicher-Engine nur den Primärschlüsselindex ändern muss.

4. Die InnoDB-Speicher-Engine verfügt bei Abfragen über eine „Tabellenrückgabe“, während die Memory-Speicher-Engine keine Tabellenrückgabe benötigt.

5. Die InnoDB-Speicher-Engine unterstützt Varchar, die Memory-Speicher-Engine jedoch nicht. Alle Varchars werden als Zeichen behandelt. Darüber hinaus unterstützt die Memory-Speicher-Engine keine Blob- und Textfelder.

6. Die Speicher-Storage-Engine kann keine Bereichsabfragen unterstützen. Weil sein Indextyp ein Hash-Index ist

In Produktionsumgebungen wird die Verwendung von Speichertabellen aus den folgenden zwei Gründen im Allgemeinen nicht empfohlen:

1. Speichertabellen unterstützen keine Zeilensperren, sondern nur Tabellensperren. Sobald die Tabelle aktualisiert ist, werden andere Vorgänge in der Tabelle, einschließlich Lesevorgänge, blockiert. Dies bedeutet, dass die Parallelitätsleistung solcher Tabellen schlecht ist.

2. Die Datenpersistenz ist schlecht. Sobald die Datenbank abstürzt, gehen die Daten in der Speichertabelle verloren. Er vergisst, eine Anweisung zum Löschen aus der Tabelle in das Binärprotokoll zu schreiben, aber die Tabellenstruktur ist immer noch vorhanden. In einer Dual-M-Umgebung kann diese Löschanweisung die temporären Tabellendaten der Masterdatenbank verunreinigen, wenn die Slavedatenbank abstürzt, was ein relativ gefährlicher Vorgang ist.

Oben finden Sie ausführliche Informationen zur MySQL-Speicher-Engine. Weitere Informationen zur MySQL-Speicher-Engine finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Analyse basierend auf der MySQL-Architektur
  • Detaillierte Analyse basierend auf der MySQL-Architektur
  • Detaillierte Erklärung der Speicher-Engine in MySQL
  • Detaillierte Erläuterung der Speicherverwaltung der MySQL InnoDB-Speicher-Engine
  • Unterschiede und Vergleiche von Speicher-Engines in MySQL
  • MySQL Series 7 MySQL-Speicher-Engine
  • Detaillierte Erläuterung verschiedener Sperren in der InnoDB-Speicher-Engine in MySQL
  • Detaillierte Erklärung nicht gruppierter Indizes in der MyISAM-Speicher-Engine von MySQL
  • MySQL-Speicher-Engines InnoDB und MyISAM
  • Einführung in die MySQL-Architektur und Speicher-Engine

<<:  Detaillierte Erklärung der Funktionen jedes Ports von Tomcat

>>:  Vue+el-table realisiert das Zusammenführen von Zellen

Artikel empfehlen

So behandeln Sie den vom Linux-System gemeldeten Fehler tcp_mark_head_lost

Problembeschreibung Kürzlich meldete ein Host die...

5 Möglichkeiten, Ihre JavaScript-Codebasis sauberer zu machen

Inhaltsverzeichnis 1. Verwenden Sie Standardparam...

Studiennotizen zur MySQL Master-Slave-Konfiguration

● Ich hatte vor, einige Cloud-Daten zu kaufen, um...

So konfigurieren Sie SSL für den Koa2-Dienst

I. Einleitung 1: SSL-Zertifikat Mein Domänenname ...

So legen Sie Hintergrundfarbe und Transparenz in Vue fest

Einstellungen für Hintergrundfarbe und Transparen...

Zusammenfassung von 76 Erfahrungspunkten der User Experience

Klassifizierung der Website-Erfahrung 1. Sinneser...

So implementieren Sie einen reibungslosen Neustart von Nginx

1. Hintergrund Während des Serverentwicklungsproz...

Linux-Plattform MySQL ermöglicht Remote-Login

Während des Entwicklungsprozesses stoße ich häufi...

Was ist SSH-Portweiterleitung? Was nützt das?

Inhaltsverzeichnis Vorwort 1. Lokale Portweiterle...

Schreiben Sie einen formellen Blog mit XHTML CSS

Der vollständige Name von Blog sollte Weblog sein...

Übersicht über die Unterschiede zwischen Linux TTY/PTS

Wenn wir einen Buchstaben auf der Tastatur eingeb...