MySQL Advanced Learning Notes (Teil 3): Einführung in die logische Architektur von MySQL, detaillierte Erläuterung der MySQL-Speicher-Engine

MySQL Advanced Learning Notes (Teil 3): Einführung in die logische Architektur von MySQL, detaillierte Erläuterung der MySQL-Speicher-Engine

Einführung in die logische MySQL-Architektur Übersicht

Im Vergleich zu anderen Datenbanken unterscheidet sich MySQL darin, dass seine Architektur in einer Vielzahl unterschiedlicher Szenarien angewendet werden kann und gut funktioniert. Dies spiegelt sich hauptsächlich in der Speicher-Engine-Architektur wider. Die Plug-in-Speicher-Engine-Architektur trennt die Abfrageverarbeitung von anderen Systemaufgaben sowie der Datenspeicherung und -extraktion. Diese Architektur ermöglicht Ihnen die Auswahl der geeigneten Speicher-Engine basierend auf Ihren Geschäftsanforderungen und tatsächlichen Anforderungen.

Controller-Schicht:
Konnektoren: Verbindungsschicht, C, Java usw. Verbindung mit MySQL herstellen

Die Geschäftslogik wird verarbeitet in:
Verbindungspool: Verbindungsschicht c3p0-Verbindungspool usw.
Manager-Dienstprogramm: Sicherung, Notfallwiederherstellung, Cluster usw.
SQL-Schnittstelle: gespeicherte Prozeduren, Ansichtstrigger
Parser: Beginnt die Abfrage der Berechtigungen von Dingen und Objekten mit „select“, handelt es sich um eine Leseoperation, beginnt sie mit „insert“, handelt es sich um eine Schreiboperation.
Das Laden von SQL-Anweisungen beginnt bei und wird in eine Form konvertiert, die MySQL verstehen kann
Optimierer: MySQL-Optimierer. Nach der vorherigen Konvertierung optimiert MySQL auf die beste Methode, die MySQL berücksichtigt, und nicht auf unsere künstliche Optimierung.
Caches und Puffer

Steckbare Speicher-Engine
Plug-in-Speicher-Engine
Die meisten von ihnen verwenden Myism und InnoDB

Computerhardware auf Dateispeicherebene
Dateisystem
Datei & Protokolle

1. Verbindungsschicht

Die oberste Schicht besteht aus einer Reihe von Clients und Verbindungsdiensten, einschließlich lokaler Sock-Kommunikation und den meisten Client/Server-basierten Tools zur Erzielung einer ähnlichen TCP/IP-Kommunikation. Es erledigt hauptsächlich einige Aufgaben wie Verbindungsverarbeitung, Autorisierungsauthentifizierung und zugehörige Sicherheitslösungen. Das Konzept des Thread-Pools wird auf dieser Ebene eingeführt, um Threads für Clients bereitzustellen, die über eine Authentifizierung sicheren Zugriff haben. Auf dieser Ebene können auch SSL-basierte sichere Links implementiert werden. Der Server überprüft außerdem die Betriebsberechtigungen jedes Clients, der sicher auf ihn zugreift.

2. Service-Schicht

2.1 Management Services & Utilities: Tools zur Systemverwaltung und -steuerung

2.2 SQL-Schnittstelle: Die SQL-Schnittstelle akzeptiert die SQL-Befehle des Benutzers und gibt die Ergebnisse zurück, die der Benutzer abfragen muss. Wählen Sie beispielsweise aus den Aufrufen der SQL-Schnittstelle

2.3 Parser: Parser
Wenn der SQL-Befehl an den Parser übergeben wird, wird er vom Parser validiert und analysiert.

2.4 Optimierer: Abfrage-Optimierer.
Die SQL-Anweisung wird vor der Abfrage mithilfe des Abfrageoptimierers optimiert.
Dies lässt sich anhand eines Beispiels verdeutlichen: select uid,name from user where gender= 1;
Der Optimierer entscheidet, ob zuerst projiziert oder gefiltert wird.

2.5 Cache und Puffer: Abfrage-Cache.
Wenn im Abfragecache ein Trefferabfrageergebnis vorliegt, kann die Abfrageanweisung Daten direkt aus dem Abfragecache abrufen.
Dieser Cache-Mechanismus besteht aus einer Reihe kleiner Caches. Beispielsweise sind Tabellencache, Datensatzcache, Schlüsselcache, Berechtigungscache und andere Caches für das Lesen und der Puffer für das Schreiben zuständig.

3. Motorschicht

Speicher-Engine-Schicht: Die Speicher-Engine ist eigentlich für die Speicherung und Extraktion von Daten in MySQL verantwortlich. Der Server kommuniziert über die API mit der Speicher-Engine. Verschiedene Speicher-Engines haben unterschiedliche Funktionen, sodass wir entsprechend unserem tatsächlichen Bedarf wählen können. MyISAM und InnoDB werden später eingeführt

4. Speicherschicht

Die Datenspeicherschicht speichert hauptsächlich Daten auf dem Dateisystem, das auf dem Rohgerät ausgeführt wird, und vervollständigt die Interaktion mit der Speicher-Engine.

Allgemeine Übersicht

Abfrage-Flussdiagramm:

Zunächst läuft der Abfragevorgang von MySQL ungefähr wie folgt ab:
•Der MySQL-Client stellt über das Protokoll eine Verbindung zum MySQL-Server her, sendet eine Abfrageanweisung und überprüft zuerst den Abfragecache. Wenn er einen Treffer erzielt (nur genau dieselbe SQL kann einen Treffer erzielen), gibt er das Ergebnis direkt zurück, andernfalls analysiert er die Anweisung. Das heißt, bevor der Server die Abfrage analysiert, greift er zuerst auf den Abfragecache (Abfragecache) zu - er speichert SELECT-Anweisungen und die entsprechenden Abfrageergebnissätze. Wenn sich ein Abfrageergebnis bereits im Cache befindet, wird die Abfrage vom Server nicht erneut analysiert, optimiert oder ausgeführt. Es gibt einfach die Ergebnisse im Cache an den Benutzer zurück, was die Leistung des Systems erheblich verbessert.

Syntaxparser und Vorverarbeitung: Zunächst analysiert MySQL die SQL-Anweisung anhand von Schlüsselwörtern und generiert einen entsprechenden „Analysebaum“. Der MySQL-Parser validiert und analysiert die Abfrage unter Verwendung der MySQL-Syntaxregeln. Der Präprozessor überprüft außerdem, ob die analysierte Zahl gemäß einiger MySQL-Regeln zulässig ist.
Abfrageoptimierer: Wenn der Analysebaum als gültig erachtet wird, wird er vom Optimierer in einen Ausführungsplan umgewandelt. Eine Abfrage kann auf viele Arten ausgeführt werden und dennoch das gleiche Ergebnis zurückgeben. Die Rolle des Optimierers besteht darin, den besten Ausführungsplan darunter zu finden. .
Dann verwendet MySQL standardmäßig den BTREE-Index und die allgemeine Anweisung lautet: Egal, wie Sie mit SQL herumspielen, zumindest im Moment verwendet MySQL höchstens einen Index in der Tabelle.

MySQL-Speicher-Engine

Befehle anzeigen

1 So zeigen Sie mit dem Befehl an

Prüfen Sie, welche Speicher-Engine Ihr MySQL derzeit bereitstellt:

mysql> Engines anzeigen;


InnoDB-Standard, unterstützt Transaktionen, Fremdschlüssel und Zeilensperren

Überprüfen Sie die aktuelle Standard-Speicher-Engine Ihres MySQL:

mysql> Variablen wie „%storage_engine%“ anzeigen;


Der Standardwert ist InnoDB
Die aktuelle ist auch InnoDB

Einführung in die einzelnen Motoren

1. InnoDB-Speicher-Engine

InnoDB ist die Standardtransaktions-Engine für MySQL, die für die Verarbeitung einer großen Anzahl kurzlebiger Transaktionen ausgelegt ist. Sofern es keinen ganz besonderen Grund für die Verwendung einer anderen Speicher-Engine gibt, sollte der InnoDB-Engine Vorrang eingeräumt werden. Zeilensperren, geeignet für Situationen mit hoher Parallelität

2. MyISAM-Speicher-Engine

MyISAM bietet eine Vielzahl von Funktionen, darunter Volltextindizierung, Komprimierung, räumliche Funktionen (GIS) usw., aber MyISAM unterstützt keine Transaktionen und Sperren auf Zeilenebene (MyISAM sperrt beim Ändern der Tabelle die gesamte Tabelle). Ein unbestreitbarer Fehler besteht darin, dass es nach einem Absturz nicht sicher wiederhergestellt werden kann.

3. Archivierungs-Engine

Die Archivspeicher-Engine unterstützt nur INSERT- und SELECT-Operationen und keine Indizes vor MySQL 5.1.
Archivtabellen eignen sich für Protokoll- und Datenerfassungsanwendungen. Geeignet für Situationen wie Big Data mit geringem Zugriff.
Den englischen Testergebnissen zufolge sind Archivtabellen etwa 75 % kleiner als MyISAM-Tabellen und etwa 83 % kleiner als InnoDB-Tabellen, die Transaktionsverarbeitung unterstützen.

4. Blackhole-Engine

Die Blackhole-Engine implementiert keinen Speichermechanismus. Sie verwirft alle eingegebenen Daten, ohne sie zu speichern. Der Server zeichnet jedoch die Protokolle der Blackhole-Tabelle auf, sodass diese zum Kopieren der Daten in die Sicherungsdatenbank oder zum einfachen Aufzeichnen im Protokoll verwendet werden können. Allerdings ist diese Anwendungsmethode mit zahlreichen Problemen verbunden und wird daher nicht empfohlen.

5. CSV-Engine

Die CSV-Engine kann gewöhnliche CSV-Dateien als MySQL-Tabellen verarbeiten, unterstützt jedoch keine Indizes.
Die CSV-Engine kann als Datenaustauschmechanismus sehr nützlich sein.
Die im CSV gespeicherten Daten können mit einem Texteditor oder Excel direkt im Betriebssystem gelesen werden.

6. Speicher-Engine

Wenn Sie schnell auf Daten zugreifen müssen und die Daten nicht geändert werden und nach einem Neustart nicht verloren gehen, ist die Verwendung einer Speichertabelle sehr nützlich. Speichertabellen sind mindestens um eine Größenordnung schneller als MyISAM-Tabellen. (Es ist schneller, eine professionelle Speicherdatenbank wie Redis zu verwenden.)

7. Föderierte Engine

Die Federated Engine ist ein Proxy für den Zugriff auf andere MySQL-Server. Obwohl diese Engine eine gute Flexibilität zwischen den Servern zu bieten scheint, verursacht sie auch oft Probleme, weshalb sie standardmäßig deaktiviert ist.

MyISAM und InnoDB (wichtigste Punkte)

Vergleichsartikel MeinIsAM InnoDB
Primär- und Fremdschlüssel Wird nicht unterstützt Unterstützung
Transaktionen Wird nicht unterstützt Unterstützung
Zeilentabellensperre Tabellensperre: Selbst wenn nur ein Datensatz bearbeitet wird, wird die gesamte Tabelle gesperrt. Dies ist für Vorgänge mit hoher Parallelität nicht geeignet. Zeilensperre: Sperrt während des Betriebs nur eine Zeile, ohne andere Zeilen zu beeinträchtigen. Geeignet für hohe Parallelität
Cache Nur Cache-Indizes, keine echten Daten Nicht nur der Index, sondern auch die eigentlichen Daten müssen zwischengespeichert werden, was einen hohen Speicherbedarf hat und die Speichergröße einen entscheidenden Einfluss auf die Leistung hat.
Tabellenbereich Klein groß
Fokus Leistung Transaktionen
Standardinstallation Y Y
Standardinstallation Y Y
Standardinstallation Y Y
Die Benutzertabelle verwendet den Standard N Y
Verwendung integrierter Systemtabellen Y N

Der InnoDB-Index verwendet B+TREE. Der MyISAM-Index verwendet B-Tree.
Der Primärschlüssel von InnoDB ist ein gruppierter Index, und die Effizienz des Hinzufügens, Löschens, Änderns und Abfragens basierend auf dem gruppierten Index ist sehr hoch.

Welches sollte ich für Alibaba oder Taobao verwenden?


• Percona hat Verbesserungen am MySQL-Datenbankserver vorgenommen, die im Vergleich zu MySQL erhebliche Verbesserungen bei Funktionalität und Leistung aufweisen. Diese Version verbessert die Leistung von InnoDB unter Hochlastbedingungen, bietet einige sehr nützliche Leistungsdiagnosetools für DBAs und verfügt über mehr Parameter und Befehle zur Steuerung des Serververhaltens.

•Das Unternehmen hat eine neue Speicher-Engine namens XtraDB entwickelt, die InnoDB vollständig ersetzen kann und über eine bessere Leistung und Parallelität verfügt.

•Die meisten MySQL-Datenbanken von Alibaba sind tatsächlich modifizierte Versionen des Percona-Prototyps.
• AliSql + AliRedis

Oben finden Sie eine Einführung in die logische Architektur von MySQL und eine detaillierte Integration der MySQL-Speicher-Engine, die vom Herausgeber vorgestellt wurde. Ich hoffe, dass es für alle hilfreich sein wird. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Herausgeber wird Ihnen rechtzeitig antworten. Ich möchte auch allen für ihre Unterstützung der Website 123WORDPRESS.COM danken!

Das könnte Sie auch interessieren:
  • Detaillierte Erläuterung der Speicherverwaltung der MySQL InnoDB-Speicher-Engine
  • Kenntnisse über die MySQL Memory-Speicher-Engine
  • Detaillierte Erklärung der Speicher-Engine in MySQL
  • Beschreiben Sie kurz die MySQL InnoDB-Speicher-Engine
  • Zusammenfassung des Wissens über MySql-Speicher-Engines und Indizes
  • Implementierungsprinzip der MySQL MyISAM-Standardspeicher-Engine
  • MySQL-Lernzusammenfassung: Ein vorläufiges Verständnis des Architekturdesigns der InnoDB-Speicher-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
  • Vor- und Nachteile gängiger MySQL-Speicher-Engines

<<:  Detaillierte Erklärung des Whereis-Beispiels zum Suchen eines bestimmten Programms in Linux

>>:  Lokale Vue-Komponentendatenfreigabe Vue.observable()-Nutzung

Artikel empfehlen

Beispiele für die Verwendung temporärer Tabellen in MySQL

Ich war in den letzten beiden Tagen etwas beschäf...

So aktualisieren Sie Ubuntu 20.04 LTS unter Windows 10

23. April 2020: Heute können Sie mit Ubuntu 20.04...

MySQL-Einfügungsproblem bei JSON

MySQL 5.7.8 und höher unterstützt nun einen nativ...

So installieren Sie Theano und Keras auf einem Ubuntu-System

Hinweis: Das System ist Ubuntu 14.04LTS, ein 32-B...

So verwenden Sie JavaScript und CSS richtig in XHTML-Dokumenten

Auf immer mehr Websites wird HTML4 durch XHTML ers...

Zukunftsweisendes Allround-Webdesign: Progressive Enhancement

<br />Original: Progressive Enhancement vers...

Implementierung von Docker zum Erstellen eines Zookeeper- und Kafka-Clusters

Ich habe vor Kurzem Kafka gelernt. Als ich mich d...

Analyse des GTK-Treeview-Prinzips und der Verwendung

Die GtkTreeView-Komponente ist eine erweiterte Ko...

Tutorial zur Verwendung des Frameset-Tags in HTML

Frameset-Seiten unterscheiden sich etwas von norm...

WePY-Cloud-Entwicklungspraxis im Linux-Befehlsabfrage-Applet

Hallo zusammen, heute werde ich mit Ihnen die WeP...

Einfache Schritte zum Konfigurieren des Nginx-Reverse-Proxys mit SSL

Vorwort Ein Reverse-Proxy ist ein Server, der übe...