Grundlagen der MySQL-Speicher-Engine

Grundlagen der MySQL-Speicher-Engine

Im vorherigen Artikel haben wir über MySQL-Transaktionen gesprochen. Jetzt sollte jeder etwas über MySQL-Transaktionen wissen. Erinnern Sie sich noch an das ACID-Prinzip von Transaktionen? Wer es nicht mehr weiß, kann sich „Einführung in MySQL-Transaktionen“ noch einmal ansehen. Genauer gesagt müsste es die MySQL InnoDB-Speicher-Engine heißen, denn in MySQL unterstützt nur die InnoDB-Speicher-Engine Transaktionen. Angesichts dessen stellen sich manche Freunde möglicherweise folgende Fragen:

Was ist eine Speicher-Engine?

Welche Speicher-Engines gibt es in MySQL?

Was sind die Merkmale und Unterschiede der einzelnen Speicher-Engines?

Sehen wir uns als Nächstes die folgenden Fragen der Reihe nach an:

Was ist eine Speicher-Engine?

Vereinfacht ausgedrückt wird MySQL zum Speichern von Daten verwendet, richtig? Wir können uns eine Speicher-Engine als eine Möglichkeit zum Speichern von Dateien und eine dazugehörige Reihe von Tools vorstellen, wobei die Eigenschaften jeder Dateispeichermethode die Eigenschaften der Speicher-Engine sind.

Beispielsweise speichert die Memory-Speicher-Engine Daten im Speicher. Ihre Vorteile sind: schnelles Lesen und Schreiben, aber die Daten bleiben nicht auf der Festplatte gespeichert und können sehr leicht verloren gehen usw.

Speicher-Engines in MySQL

In MySQL 5.7 werden die folgenden Speicher-Engines von MySQL unterstützt:

InnoDB

MeinIsAM

Erinnerung

CSV

Archiv

Schwarzes Loch

Verschmelzen:

Föderiert

Beispiel

Im Folgenden werden nur häufig verwendete Speicher-Engines vorgestellt. Wenn Sie an anderen Speicher-Engines interessiert sind, die hier nicht vorgestellt werden, können Sie selbst danach suchen.

InnoDB: unterstützt Transaktionsvorgänge (wie die Befehle „Begin“, „Commit“ und „Rollback“) und unterstützt Sperren auf Zeilenebene. Im Vergleich zu Tabellensperren haben Sperren auf Zeilenebene eine feinere Granularität und ermöglichen eine höhere Parallelität. Hier gibt es viele Details. Nächstes Mal werden wir einen separaten Artikel schreiben.) unterstützt Einschränkungen der referenziellen Integrität von Fremdschlüsseln. Die InnoDB-Speicher-Engine ist auch die Standardspeicher-Engine in MySQL Version 5.7. Der Nachteil besteht darin, dass es viel Speicherplatz beansprucht.

MyISAM: Diese Speicher-Engine benötigt viel weniger Platz als die InnoDB-Speicher-Engine, unterstützt jedoch nur Tabellensperren, hat eine viel geringere Parallelitätsleistung und unterstützt keine Transaktionen. Sie wird normalerweise nur in schreibgeschützten Anwendungen verwendet. Es ist die ursprüngliche Speicher-Engine von MySQL.

Speicher: Das größte Merkmal dieser Speicher-Engine besteht darin, dass alle Daten im Speicher gespeichert werden. Früher wurde dies als „Heap“ bezeichnet.
Anwendungsszenario: Hauptsächlich werden einige nicht kritische Daten gespeichert, auf die schnell zugegriffen werden muss. Warum handelt es sich nicht um kritische Daten? Nur weil alle Daten im Speicher abgelegt sind, kann dies auch als unsicher angesehen werden.

CSV: Lassen Sie uns zunächst CSV kennenlernen. Eine CSV-Datei ist eigentlich eine durch Kommas getrennte Textdatei. Sie wird häufig zur Datenkonvertierung verwendet. Dieser Typ wird selten verwendet und unterstützt keine Indizes.

Archiv: Archivdateien, die hauptsächlich zum Speichern selten verwendeter Referenzdateien verwendet werden.

Beispiel: Diese Speicher-Engine wird hauptsächlich verwendet, um zu zeigen, wie Sie selbst eine Speicher-Engine schreiben, und wird im Allgemeinen nicht in einer Produktionsumgebung verwendet.

So wählen Sie eine Speicher-Engine aus

Aus dem obigen Vergleich sollten Sie ersehen haben, dass die InnoDB-Speicher-Engine Transaktionen, Fremdschlüssel und Zeilensperren unterstützt. Es eignet sich am besten für Anwendungen, die eine Online-Transaktionsverarbeitung erfordern. Wenn Sie eine Speicher-Engine auswählen, empfehle ich, InnoDB als Speicher-Engine zu wählen, sofern kein besonderer Grund vorliegt.

1. Wir können die Speicher-Engine beim Erstellen einer Tabelle angeben. Wenn nicht angegeben, wird die Standard-Speicher-Engine verwendet.

Tabelle t_base_user erstellen(
oid bigint(20) nicht null Primärschlüssel auto_increment Kommentar "",
erstellt am Datum/Uhrzeit Null Kommentar ''
)engine=innodb

2. (Methode 1) Zeigen Sie die Speicher-Engine der Tabelle an

mysql> Tabellenstatus wie „t_base_user“ anzeigen \G;
*************************** 1. Reihe ***************************
    Name: t_base_user
   Engine: InnoDB
   Version: 10
 Row_format: Dynamisch
    Zeilen: 0
Durchschnittliche Zeilenlänge: 0
 Datenlänge: 16384
Max_data_length: 0
Indexlänge: 0
  Datenfrei: 0
Auto_Inkrement: 1
 Erstellungszeit: 17.12.2017 20:10:24
 Update_time: NULL
 Check_time: NULL
  Sortierung: utf8_unicode_ci
  Prüfsumme: NULL
Erstellungsoptionen: 
   Kommentar: 
1 Zeile im Satz (0,01 Sek.)

3. (Methode 2) Zeigen Sie die Speicher-Engine-Informationen der Tabelle an

mysql> anzeigen, Tabelle erstellen t_base_user\G;
*************************** 1. Reihe ***************************
  Tabelle: t_base_user
Tabelle erstellen: CREATE TABLE `t_base_user` (
`oid` bigint(20) NICHT NULL AUTO_INCREMENT,
`created_at` Datum/Uhrzeit DEFAULT NULL,
PRIMÄRSCHLÜSSEL (`oid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
1 Zeile im Satz (0,00 Sek.)

Außerdem ist zu beachten: Es wird nicht empfohlen, die Speicher-Engine einer Tabelle zu ändern. Beim Erstellen einer Tabelle müssen Sie überlegen, welche Speicher-Engine Sie verwenden möchten.

Die heutige Bestellung

Befehl: Engines anzeigen;

Standardsyntax: Speicher-Engines anzeigen;

Wobei die Lagerung optional ist.

Funktion: Anzeige der von der aktuellen MySQL-Version unterstützten Speicher-Engines.

Beispiel (MySQL-Version: 5.7.20):

mysql> Speicher-Engines anzeigen;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine | Support | Kommentar | Transaktionen | XA | Speicherpunkte |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| MRG_MYISAM | JA | Sammlung identischer MyISAM-Tabellen | NEIN | NEIN | NEIN |
| CSV | JA | CSV-Speicher-Engine | NEIN | NEIN | NEIN |
| MyISAM | JA | MyISAM-Speicher-Engine | NEIN | NEIN | NEIN |
| BLACKHOLE | JA | /dev/null-Speicher-Engine (alles, was Sie hineinschreiben, verschwindet) | NEIN | NEIN | NEIN |
| SPEICHER | JA | Hash-basiert, im Speicher abgelegt, nützlich für temporäre Tabellen | NEIN | NEIN | NEIN |
| InnoDB | STANDARD | Unterstützt Transaktionen, Zeilensperren und Fremdschlüssel | JA | JA | JA |
| 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.)

Anwendungsszenario: Diese Funktion ist sehr nützlich, um die von der aktuellen Datenbankversion und der Standardspeicher-Engine unterstützten Speicher-Engines anzuzeigen.

Engine: Name der Speicher-Engine.

Support: Gibt an, ob die aktuelle MySQL-Serverversion die Speicher-Engine unterstützt. JA bedeutet, dass sie unterstützt wird, und NEIN bedeutet, dass sie nicht unterstützt wird.

Kommentar: Die Eigenschaften der Speicher-Engine, wie Innodb

Unterstützt Transaktionen, Zeilensperren usw.

Transaktionen: ob Transaktionen unterstützt werden sollen, JA bedeutet Unterstützung, Nein bedeutet keine Unterstützung.

XA und Savepoints: Diese beiden Attribute beziehen sich auf Transaktionen. Wenn Transaktionen Ja ist, sind diese beiden Attribute sinnvoll, andernfalls sind sie beide NEIN.

Das könnte Sie auch interessieren:
  • Beschreiben Sie kurz die MySQL InnoDB-Speicher-Engine
  • Eine kurze Einführung in die MySQL-Speicher-Engine
  • Zusammenfassung des Wissens über MySql-Speicher-Engines und Indizes
  • Implementierungsprinzip der MySQL MyISAM-Standardspeicher-Engine
  • Eine kurze Erläuterung der vier häufig verwendeten Speicher-Engines in MySQL
  • Erläuterung der Konfiguration und Verwendung der MySQL-Speicher-Engine InnoDB
  • Zusammenfassung der Unterschiede zwischen den MySQL-Speicher-Engines MyISAM und InnoDB
  • Detaillierte Erläuterung der Funktionen und Verwendung allgemeiner MySQL-Speicher-Engines
  • Einführung in gängige MySQL-Speicher-Engines sowie Parametereinstellung und -optimierung
  • Lassen Sie uns über die Speicher-Engine in MySQL sprechen

<<:  Detaillierte Erläuterung geplanter Aufgaben und verzögerter Aufgaben unter Linux

>>:  Vergleich verschiedener Möglichkeiten zur Messung der Leistung von JavaScript-Funktionen

Artikel empfehlen

Was sind die Vorteile von MySQL MGR?

MGR (MySQL Group Replication) ist eine neue Funkt...

MySQL-Sortierung – Chinesische Details und Beispiele

Detaillierte Erklärung zur MySQL-Sortierung chine...

Docker nginx Beispielmethode zum Bereitstellen mehrerer Projekte

Voraussetzungen 1. Docker wurde auf dem lokalen C...

So spielen Sie lokale Mediendateien (Video und Audio) mit HTML und JavaScript ab

Erstens kann JavaScript aus Sicherheitsgründen ni...

Einführung in Javascript DOM, Knoten und Elementerfassung

Inhaltsverzeichnis DOM Knoten Elementknoten: Text...

So lösen Sie das Problem, dass der Docker-Container keinen Vim-Befehl hat

Finden Sie das Problem Als ich heute versuchte, d...

Das WeChat-Applet implementiert die Aufnahmefunktion

In diesem Artikel wird der spezifische Code für d...

Detaillierte Erklärung des Sidecar-Modus in Docker Compose

Inhaltsverzeichnis Was ist Docker Compose Anforde...

Erstellen privater Mitglieder in JavaScript

Inhaltsverzeichnis 1. Verwende Closures 2. Verwen...

Detaillierte Erklärung des Unterschieds zwischen tinyint und int in MySQL

Frage: Was ist der Unterschied zwischen int(1) un...

So verwenden Sie CSS-Zähler, um geordnete Zahlenlisten zu verschönern

Beim Webdesign ist es sehr wichtig, eine organisi...