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.
Speicher-Engine MySQL unterstützt mehrere Speicher-Engines. Verwenden Sie 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
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:
|
<<: Vergleich der Vorteile von vue3 und vue2
>>: So ändern Sie die Quellenliste von Ubuntu 18.04 zum Alibaba- oder Tsinghua-Spiegel
Hier ist ein Beispielcode für die Verwendung regu...
Inhaltsverzeichnis Herkunft Umweltinformationen F...
Vorwort In diesem Artikel werden hauptsächlich di...
> MySQL 5.7 Cluster Master und Slave bereitste...
Inhaltsverzeichnis Nachfragehintergrund Warum Ngi...
1. Ziehen Sie das Bild Docker-Pull-Registrierung....
Dieser Artikel fasst die allgemeinen Befehle zur ...
Inhaltsverzeichnis 1. Datenbankbetrieb 1.1 Datenb...
Um die Tabelle zu verschönern, können Sie für die...
Dieser Artikel beschreibt MySQL-Mehrtabellenabfra...
<body style="scroll:no"> <Tabe...
In diesem Artikelbeispiel wird der spezifische Co...
Betrachten wir zunächst drei Situationen, in dene...
Inhaltsverzeichnis 1. Routennavigation 2. API zur...
Inhaltsverzeichnis Vorwort Array.Prototyp.enthält...