Kapitel 05 Speicher-Engine

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, InnoDBwird standardmäßig die Speicher-Engine der Tabelle verwendet.

SET DEFAULT_STORAGE_ENGINE=MyISAM;

Oder ändern Sie my.cnfdie 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, .islusw. .db.optexistieren in MySQL8.0 nicht mehr.
  • 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

Guess you like

Origin blog.csdn.net/github_36665118/article/details/134139270
05