1. MySql-Architektur Bevor wir die Speicher-Engine vorstellen, stellen wir zunächst die MySQL-Architektur vor, damit jeder weiß, wo die Speicher-Engine im gesamten MySQL-System steht. Die folgende Abbildung ist ein offizielles Architekturdiagramm: MySQL-Architekturdiagramm Wie aus der obigen Abbildung ersichtlich ist, besteht MySQL aus den folgenden Teilen:
Das wichtigste Merkmal, das MySQL-Datenbanken von anderen Datenbanken unterscheidet, ist ihre Plug-in-Tabellenspeicher-Engine. Wie aus der obigen Abbildung ersichtlich, unterstützt MySql viele Arten von Speicher-Engines. Es ist wichtig zu beachten, dass Speicher-Engines auf Tabellen und nicht auf Datenbanken basieren. 2. MySql-Speicher-Engine Der Vorteil der Plug-in-Speicher-Engine besteht darin, dass je nach den Merkmalen bestimmter Anwendungen unterschiedliche Speicher-Engines ausgewählt werden können. Im Folgenden sind einige häufig verwendete Speicher-Engines für MySQL aufgeführt. 2.1 InnoDB-Speicher-Engine Die InnoDB-Speicher-Engine unterstützt Transaktionen und ist in erster Linie für Anwendungen zur Online-Transaktionsverarbeitung (OLTP) konzipiert. Zu seinen Funktionen gehören das Zeilensperrendesign, die Unterstützung von Fremdschlüsseln und die Unterstützung für sperrenfreies Lesen ähnlich wie Oracle, d. h. der Standardlesevorgang generiert keine Sperren. Ab der MySQL-Datenbankversion 5.5.8 ist die InnoDB-Speicher-Engine die Standard-Speicher-Engine. InnoDB erreicht eine hohe Parallelität durch die Verwendung von Multi-Version Concurrency Control (MVCC) und implementiert vier SQL-Standardisolationsebenen, wobei die Standardebene die Ebene REPEATABLE ist. Gleichzeitig wird eine Strategie namens Next-Key-Locking verwendet, um Phantomlesen zu verhindern. 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 der Daten in der Tabelle verwendet die InnoDB-Speicher-Engine einen Cluster-Ansatz, sodass der Speicher jeder Tabelle in der Reihenfolge des Primärschlüssels gespeichert wird. Wenn Sie beim Definieren einer Tabelle keinen Primärschlüssel explizit angeben, generiert die InnoDB-Speicher-Engine für jede Zeile eine 6-Byte-ROWID und verwendet diese als Primärschlüssel. 2.2 MyISAM-Speicher-Engine Die MyISAM-Speicher-Engine unterstützt weder Transaktionen noch Tabellensperrendesign, unterstützt jedoch die Volltextindizierung und ist hauptsächlich auf einige OLAP-Datenbankanwendungen ausgerichtet. Ein weiteres einzigartiges Merkmal der MyISAM-Speicher-Engine besteht darin, dass ihr Pufferpool nur Indexdateien, keine Datendateien zwischenspeichert, was einen großen Unterschied zu den meisten Datenbanken darstellt. Ab MySQL 5.0 unterstützt MyISAM standardmäßig 256 TB Einzeltabellendaten, was ausreicht, um die allgemeinen Anwendungsanforderungen zu erfüllen. 2.3 Speicher-Storage-Engine Die Memory-Speicher-Engine (früher als HEAP-Speicher-Engine bekannt) speichert Tabellendaten im Speicher. Wenn die Datenbank neu gestartet wird oder abstürzt, verschwinden die Daten in der Tabelle. Es eignet sich gut für temporäre Tabellen, in denen temporäre Daten gespeichert werden, sowie für Breitengradtabellen in Data Warehouses. Die Speicher-Speicher-Engine verwendet standardmäßig Hash-Indizes anstelle der bekannten B+-Baumindizes. Obwohl die Speicher-Engine sehr schnell ist, unterliegen sie bei der Verwendung dennoch gewissen Einschränkungen. Beispielsweise unterstützt es nur Tabellensperren, weist eine schlechte Parallelitätsleistung auf und unterstützt keine TEXT- und BLOB-Spaltentypen. Am wichtigsten ist, dass Felder mit variabler Länge (varchar) auf die gleiche Weise gespeichert werden wie Felder mit fester Länge (char), was zu Speicherverschwendung führt. Darüber hinaus wird leicht übersehen, dass die MySQL-Datenbank die Memory-Speicher-Engine als temporäre Tabelle verwendet, um den Zwischenergebnissatz der Abfrage zu speichern. Wenn der Zwischenergebnissatz größer als die Kapazitätseinstellung der Speicher-Speicher-Engine-Tabelle ist oder wenn das Zwischenergebnis Felder vom Spaltentyp TEXT oder BLOB enthält, konvertiert die MySQL-Datenbank es in eine MyISAM-Speicher-Engine-Tabelle und speichert es auf der Festplatte. Wie bereits erwähnt, speichert MyISAM keine Datendateien im Cache, sodass die Leistung der zu diesem Zeitpunkt generierten temporären Tabelle bei Abfragen verloren geht. 2.4 Archivspeicher-Engine Die Archivspeicher-Engine unterstützt nur INSERT- und SELECT-Operationen und unterstützt Indizes ab MySQL 5.1. Die Archivspeicher-Engine verwendet den Zlib-Algorithmus, um Datenzeilen für die Speicherung mit einem Komprimierungsverhältnis von bis zu 1:10 zu komprimieren. Wie der Name schon sagt, eignet sich die Archive-Speicher-Engine gut zum Speichern archivierter Daten, beispielsweise Protokollinformationen. Die Archivspeicher-Engine verwendet Zeilensperren, um Einfügevorgänge mit hoher Parallelität zu implementieren, ist jedoch keine transaktionssichere Speicher-Engine. Ihr Designziel besteht hauptsächlich darin, Einfüge- und Komprimierungsfunktionen mit hoher Geschwindigkeit bereitzustellen. Natürlich unterstützt MySql auch viele andere Speicher-Engines, die hier nicht einzeln aufgeführt sind. 3. Vergleich von Speicher-Engines Die Speicher-Engine kann als Speicherstruktur der Tabelle verstanden werden, und jede Speicher-Engine unterstützt unterschiedliche Funktionen. MySQL unterstützt Plug-in-Speicher-Engines und Sie können für jede Datentabelle eine andere Speicher-Engine angeben. Die Merkmale häufig verwendeter Speicher-Engines sind wie folgt: Wir können auch den folgenden Befehl verwenden, um zu sehen, welche Speicher-Engines die aktuelle Datenbank unterstützt: -- Sehen Sie sich die unterstützten Speicher-Engines an. Show Engines; Nachfolgend finden Sie eine kurze Zusammenfassung der drei am häufigsten verwendeten Speicher-Engines:
Daher sollten wir die geeignete Speicher-Engine entsprechend den spezifischen Anforderungen der Anwendung auswählen, anstatt blind die Standardspeicher-Engine (INNODB) zu wählen. Wenn Sie Transaktionssicherheit (ACID-Konformität) für Commit, Rollback und Wiederherstellung bereitstellen möchten und Parallelitätskontrolle benötigen, ist InnoDB eine gute Wahl. Wenn die Datentabelle hauptsächlich zum Einfügen und Abfragen von Datensätzen verwendet wird, bietet die MyISAM-Engine eine höhere Verarbeitungseffizienz. Wenn Sie Daten nur vorübergehend speichern müssen, die Datenmenge nicht groß ist und keine hohe Datensicherheit erforderlich ist, können Sie die Daten in der MEMORY-Engine im Speicher speichern. MySQL verwendet diese Engine als temporäre Tabelle, um die Zwischenergebnisse der Abfrage zu speichern. Wenn nur INSERT- und SELECT-Operationen vorhanden sind, können Sie die Archiv-Engine wählen. Die Archiv-Speicher-Engine unterstützt Einfügeoperationen mit hoher Parallelität, ist jedoch nicht transaktionssicher. Die Archivspeicher-Engine eignet sich sehr gut zum Speichern archivierter Daten. Beispielsweise können mit der Archiv-Engine Protokollinformationen aufgezeichnet werden. 4. Referenzen MySQL Technischer Insider Das Obige ist eine kurze Einführung in die Details der 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:
|
>>: Detaillierte Erläuterung des Startens und Einhängens des Docker-Nginx-Containers in den lokalen
Als Front-End-Ingenieure müssen wir mit dem IE ve...
Vorwort Einige der früheren Codes auf Github erfo...
FOUC steht für Flash of Unstyled Content, abgekürz...
ngx_lua_module ist ein Nginx-HTTP-Modul, das den ...
1. Tabellen erstellen <br /> Erstellen Sie ...
Faltdisplay mit mehrzeiligem Textbaustein Falten ...
<br />Die Lösungsschritte sind wie folgt: St...
Das <a>-Tag wird hauptsächlich verwendet, u...
Vom Einsteiger bis zum Neueinsteiger ist das Linu...
MySQL-Dienst 8.0.14-Installation (allgemein), zu ...
1. MySQL-Download-Adresse; http://ftp.ntu.edu.tw/...
CenOS6.7 installiert MySQL8.0.22 (empfohlene Samm...
Nach der offiziellen Veröffentlichung von Activit...
Was ist ein Generator? Ein Generator ist ein Code...
Passive Prüfung Mit passiven Integritätsprüfungen...