Kapitel 05 Speicher-Engine
1. Sehen Sie sich die Speicher-Engine an
show engines;
# 或
show engines\G
2. Legen Sie die Standardspeicher-Engine des Systems fest
- Sehen Sie sich die Standardspeicher-Engine an:
show variables like '%storage_engine%';
#或
SELECT @@default_storage_engine;
- Ändern Sie die Standardspeicher-Engine
Wenn die Speicher-Engine der Tabelle in der Anweisung, die die Tabelle erstellt, nicht explizit angegeben wird, InnoDB
wird standardmäßig die Speicher-Engine der Tabelle verwendet.
SET DEFAULT_STORAGE_ENGINE=MyISAM;
Oder ändern Sie my.cnf
die Datei:
default-storage-engine=MyISAM
# 重启服务
systemctl restart mysqld.service
3. Legen Sie die Speicher-Engine der Tabelle fest
Die Speicher-Engine ist für das Extrahieren und Schreiben von Daten in die Tabelle verantwortlich. Wir können dies tun 不同的表设置不同的存储引擎
, was bedeutet, dass verschiedene Tabellen unterschiedliche physische Speicherstrukturen und unterschiedliche Extraktions- und Schreibmethoden haben können.
3.1 Geben Sie beim Erstellen der Tabelle die Speicher-Engine an
CREATE TABLE 表名(
建表语句;
) ENGINE = 存储引擎名称;
3.2 Ändern Sie die Speicher-Engine der Tabelle
ALTER TABLE 表名 ENGINE = 存储引擎名称;
4. Einführung in den Motor
4.1 InnoDB- Engine: Transaktionsspeicher-Engine mit Fremdschlüsselunterstützungsfunktion
- MySQL enthält die InnoDB-Speicher-Engine ab 3.23.34a.
大于等于5.5之后,默认采用InnoDB引擎
. - InnoDB ist MySQL
默认事务型引擎
und für die Verarbeitung großer Mengen kurzlebiger Transaktionen konzipiert. Es kann ein vollständiges Commit und Rollback von Transaktionen sichergestellt werden. - Neben dem Hinzufügen und Abfragen sind auch Aktualisierungs- und Löschvorgänge erforderlich, daher sollte die InnoDB-Speicher-Engine bevorzugt werden.
- Sofern kein ganz besonderer Grund vorliegt, eine andere Speicher-Engine zu verwenden, sollte der InnoDB-Engine Vorrang eingeräumt werden.
- Struktur der Datendatei:
- Tabellenname.frm speichert die Tabellenstruktur (in MySQL8.0 in Tabellenname.ibd zusammengeführt).
- Tabellenname.ibd speichert Daten und Indizes
- InnoDB ist
为处理巨大数据量的最大性能设计
.- In früheren Versionen wurden Wörterbuchdaten in Metadatendateien, nicht transaktionalen Tabellen usw. gespeichert. Diese Metadatendateien sind jetzt gelöscht. Zum Beispiel:
.frm
,.par
,.trn
,.isl
usw..db.opt
existieren in MySQL8.0 nicht mehr.
- In früheren Versionen wurden Wörterbuchdaten in Metadatendateien, nicht transaktionalen Tabellen usw. gespeichert. Diese Metadatendateien sind jetzt gelöscht. Zum Beispiel:
- Im Vergleich zur Speicher-Engine von MyISAM
InnoDB写的处理效率差一些
wird mehr Speicherplatz zum Speichern von Daten und Indizes benötigt. - MyISAM speichert nur den Index, nicht die realen Daten, InnoDB speichert nicht nur den Index, sondern auch die realen Daten,
对内存要求较高
und die Speichergröße hat einen entscheidenden Einfluss auf die Leistung.
4.2 MyISAM- Engine: die wichtigste Nicht-Transaktions-Speicher-Engine
- MyISAM bietet eine große Anzahl von Funktionen, darunter Volltextindizierung, Komprimierung, räumliche Funktionen (GIS) usw., aber MyISAM
不支持事务、行级锁、外键
weist zweifellos einen Fehler auf崩溃后无法安全恢复
. 5.5之前默认的存储引擎
- Der Vorteil ist der Zugriff
速度快
, es besteht keine Anforderung an die Transaktionsintegrität oder Anwendungen, die auf SELECT und INSERT basieren - Für Statistiken steht zusätzlich ein konstanter Speicher zur Verfügung. Daher ist die Abfrageeffizienz von count(*) sehr hoch
- Struktur der Datendatei:
- Tabellenname.frm-Speichertabellenstruktur
- Tabellenname.MYD-Speicherdaten (MYData)
- Tabellenname.MYI-Speicherindex (MYIndex)
- Anwendungsszenarien: Nur-Lese-Anwendungen oder lesebasierte Unternehmen
4.3 Archiv- Engine: Wird zur Datenarchivierung verwendet
4.4 Blackhole- Engine: Schreibvorgänge werden verworfen und Lesevorgänge geben leeren Inhalt zurück
4.5 CSV- Engine: Trennen Sie beim Speichern von Daten die einzelnen Datenelemente durch Kommas
4.6 Speicher- Engine: Tabellen im Speicher ablegen
4.7 Föderierte Engine: Zugriff auf Remote-Tabellen
4.8 Merge-Engine: Verwaltet eine Tabellensammlung, die aus mehreren MyISAM-Tabellen besteht
4.9 NDB-Engine: MySQL-Cluster-dedizierte Speicher-Engine
5. MyISAM und InnoDB
Vergleichsartikel | MyISAM | InnoDB |
---|---|---|
Unbekannter Schlüssel | nicht unterstützt | Unterstützung |
Angelegenheiten | nicht unterstützt | Unterstützung |
Zeilentabellensperre | Tabellensperre: Selbst wenn ein Datensatz bearbeitet wird, wird die gesamte Tabelle gesperrt, was für stark gleichzeitige Vorgänge nicht geeignet ist. | Die Zeilensperre sperrt nur eine bestimmte Zeile während des Betriebs und wirkt sich nicht auf andere Zeilen aus. Sie eignet sich für Vorgänge mit hoher Parallelität. |
Zwischenspeicher | Es wird nur der Index zwischengespeichert, nicht die echten Daten | Nicht nur das Zwischenspeichern des Index, sondern auch das Zwischenspeichern der realen Daten erfordert viel Speicher, und die Speichergröße hat entscheidenden Einfluss auf die Leistung. |
Verwenden Sie Ihre eigene Systemtabelle | Y | N |
Fokuspunkt | Leistung: Ressourcen sparen, weniger verbrauchen, einfaches Geschäft | Transaktionen: gleichzeitige Schreibvorgänge, Transaktionen, größere Ressourcen |
Standardinstallation | Y | Y |
Standardmäßig verwendet | N | Y |