Detaillierte Erläuterung des MySQL-Ausführungsprinzips, der logischen Schichtung und der Änderung der Datenbankverarbeitungs-Engine

Detaillierte Erläuterung des MySQL-Ausführungsprinzips, der logischen Schichtung und der Änderung der Datenbankverarbeitungs-Engine

Da ich MySQL schon so lange verwende, glaube ich, dass ich die SQL-Anweisungen bereits auswendig kann. Also habe ich versucht, das Ausführungsprinzip zu verstehen. Im Folgenden sind die wichtigsten Punkte aufgeführt, die ich während des Lernprozesses zusammengefasst habe.

Solange es sich um eine B/S-Architektur handelt, wird es einen Client und einen Server geben, und MySQL ist keine Ausnahme.

Zunächst sendet der Client eine Anforderung, bei der es sich um eine Abfrageanforderung (Select) handelt, und das Objekt der Anforderung ist der Server. Wie verarbeitet der Server diese Abfragefunktion?

Logische Schichtung

Zunächst können wir uns den Server als großen Container mit vier Strukturschichten vorstellen. Wenn eine Anfrage eingeht, werden diese vier Schichten ausgeführt und erst nach einer Ausführung wird das gewünschte Ergebnis an uns zurückgegeben.

Erste Schicht: Verbindungsschicht

Mit anderen Worten, wenn unser Client eine Auswahl sendet, wird diese zur Verarbeitung direkt an die Verbindungsschicht übergeben und ihre Aufgabe besteht darin, Dienste für die Verbindung mit dem Client bereitzustellen.

Die Verbindungsschicht stellt lediglich eine Verbindung mit dem Client her und erhält unsere Anfrage (Select), verarbeitet sie jedoch nicht selbst, da sie nur Verbindungen herstellt. Wer wird sie also verarbeiten? Gehen Sie weiter nach unten.

Zweite Schicht: Serviceschicht

Die Serviceschicht kann zwei Dinge tun:

1. Bieten Sie Benutzern verschiedene Schnittstellen, die verwendet werden können

Die Abfrage von gerade ist beispielsweise, dass unsere üblichen CRUD-Operationen (Erstellen, Löschen, Ändern und Abfragen) alle hier sind. Die Verbindungsschicht erhält diese Auswahl und gibt sie direkt an die Serviceschicht weiter. Sie stellt nicht nur eine Schnittstelle für den Benutzer bereit, sondern auch etwas, das als SQL-Optimierer bezeichnet wird.

2. MySQL-Optimierer

Wenn wir eine SQL-Anweisung zur Ausführung schreiben, wird der Optimierer nach der Ausführung hier (zweite Ebene) denken, dass die Leistung der von mir geschriebenen SQL-Anweisung nicht gut genug ist. Zu diesem Zeitpunkt wird der Optimierer nach der Ausführung eine SQL-Anweisung schreiben, die der von mir geschriebenen entspricht, um sie zu ersetzen. Diese äquivalente Schreibmethode dient dazu, die von Ihnen geschriebene SQL-Anweisung durch diesen Optimierer zu optimieren. Da er denkt, dass die Leistung Ihrer SQL-Anweisung zu niedrig ist, optimiert er Ihre SQL-Anweisung. Diese Optimierungsoperation führt der Optimierer aus;

Natürlich kann der Optimierer SQL-Anweisungen optimieren, was gewisse Vorteile für die Leistung haben kann, aber es hat auch Nachteile! Zum Beispiel:

„Wenn Sie selbst optimieren, ist es a, aber die tatsächliche Ausführung ist nicht a, weil der Optimierer denkt, dass Ihre Optimierung nicht gut genug ist, und das Ergebnis ist, dass aus a b wird. Mit anderen Worten, ich habe eindeutig a geschrieben, aber das Programm führt b aus.“

Dies würde in unserem Entwicklungsprozess zu Verwirrung führen, da dieser bereits optimiert ist. Was Sie geschrieben haben, stimmt nicht mehr mit dem überein, was Sie vorher geschrieben haben.

Die dritte Schicht: Motorschicht

Es bietet verschiedene Möglichkeiten zum Speichern von Daten, die gängigsten sind: lnnoDB, MylSAM

Wichtige Unterschiede:

lnnoDB [MySQL-Standard]: Bei der Entwicklung war es transaktionsorientiert [geeignet für Operationen mit hoher Parallelität]. Prinzip: Da es sich um eine Zeilensperre handelt, muss ich jedes Datenelement sperren. Wenn ich zu viele Sperren vornehme, verringert sich die Leistung. Obwohl die Leistung abnimmt, ist es für Operationen mit hoher Parallelität geeignet und nicht fehleranfällig.

MylSAM: Leistungsprioritätsprinzip: Da es sich um eine Tabellensperre handelt, sind die zehn Daten in der Tabelle nicht betroffen und die zehn Sperren werden gleichzeitig abgeschlossen, sodass die Leistung schnell ist

Die Leistungspriorität ist leicht zu verstehen. Wenn beispielsweise 10.000 Daten vorliegen, ist die Effizienz umso höher, je schneller sie verarbeitet werden.

Die Dinge sollen einige gleichzeitige Vorgänge verhindern. Zu viel Parallelität kann zu Fehlern führen, daher ist es für Vorgänge mit hoher Parallelität geeignet.

Wenn Sie also bei einem Projekt oder beim Erstellen einer Datenbank die Leistung im Vordergrund steht, wählen Sie die MySAM-Engine. Wenn es sich um einen Vorgang mit hoher Parallelität handelt, wählen Sie die lnnoDB-Engine. Im Folgenden werde ich erläutern, wie Sie die Engine ändern können.

Schicht 4: Speicherschicht

Dies ist leicht zu verstehen. Die endgültigen Daten werden in der Speicherschicht gespeichert.

Nachdem wir über die vier Schichten gesprochen haben, wollen wir unsere Gedanken klären

Zuerst sendet der Client eine Select-Operation ---> die Verbindungsschicht empfängt sie und sendet sie an die Serviceschicht ---> die Serviceschicht optimiert Ihre Abfrage und gibt das Optimierungsergebnis an die Engineschicht weiter ---> wählen Sie die Engine der aktuellen Datenbank aus. Nach Auswahl der Engine sendet die Engine die endgültigen Daten an die Speicherschicht ---> die Speicherschicht verwendet die Speicherschicht zum Speichern von Daten

Engine anzeigen

Engines anzeigen; Alle von MySQL unterstützten Engines anzeigen

Ausführungsergebnis:

Ja bedeutet Unterstützung. In der InnoDB-Unterstützungsoption ist es DEFAULT (Standard), was bedeutet, dass beim Erstellen einer Datenbank InnoDB die Standard-Engine ist.

Zeigen Sie die aktuell von der Datenbank verwendete Engine an

Variablen wie „%storage_engine%“ anzeigen;

Ausführungsergebnis:

Offensichtlich verwenden wir derzeit InnoDB

Gibt die Engine für Datenbankobjekte an

Ich erstelle jetzt eine Tabelle. Ich verwende für diese Tabelle nicht InnoDB, sondern MySAM, da ich der Leistung Priorität einräumen möchte. Jetzt verwende ich die MySQL-Befehlszeile, um die Tabelle zu erstellen

1. Datenbankbefehl angeben: Datenbanknamen verwenden

2. Erstellen Sie eine einfache Tabelle in der angegebenen Datenbank

Tabelle tb erstellen(

Ich würde int (4),

Name varchar(5),

Primärschlüssel (ID)

)ENGINE=MyISAM;

Ausführungsergebnis:

Es zeigt an, dass die Erstellung erfolgreich war und dass es sich bei der Engine der Tabelle um die von uns manuell angegebene und nicht um die Standard-Engine handelt.

Oben sind alle Wissenspunkte zu MySQL-Ausführungsprinzipien, logischer Schichtung und dem Ändern der Datenbankverarbeitungs-Engine aufgeführt. Vielen Dank fürs Lesen und Ihre Unterstützung für 123WORDPRESS.COM.

Das könnte Sie auch interessieren:
  • Ein praktischer Bericht über die Prüfung und Bearbeitung doppelter MySQL-Datensätze vor Ort
  • MySQLs Methode zum Umgang mit doppelten Daten (Verhindern und Löschen)
  • MySQL-Lernnotizen zum Umgang mit doppelten Daten
  • So handhaben Sie gleichzeitige Aktualisierungen von MySQL-Daten
  • Einige Methoden zur Optimierung der Abfragegeschwindigkeit bei der Verarbeitung großer Datenmengen durch MySQL
  • Sortieren der MySQL-Datenverarbeitung und Erläuterung der Vorgänge zum Hinzufügen, Löschen und Ändern

<<:  Aufbauprozess des Telnet-Dienstes in CentOS 7.6 (Openssh-Upgrade-Kampf, erste Aufgabe: Aufbau der Backup-Transportleitung)

>>:  Miniprogramm zur Implementierung einer kreisförmigen Text-Scrolling-Animation

Artikel empfehlen

Beispiel für die Einrichtung eines mehrspaltigen Layouts gleicher Höhe mit CSS

Mehrere Spalten haben zunächst unterschiedliche I...

Analyse und Anwendung des Wasserfallflussprinzips unregelmäßiger Bilder

Das im Projekt aufgetretene Layoutproblem unregel...

Einfaches Anwendungsbeispiel für eine rekursive Vue-Komponente

Vorwort Ich glaube, dass viele Studenten bereits ...

Kann die wiederholbare Leseebene von MySQL Phantomlesevorgänge lösen?

Einführung Als ich mehr über die Datenbanktheorie...

Linux entfernt node.js vollständig und installiert es über den Befehl yum neu

erster Schritt Einmaliges Löschen mit der integri...

Detaillierte Erklärung dieses Zeigeproblems in JavaScript

Vorwort Glauben Sie mir, solange Sie sich an die ...

Einführung in die allgemeine API-Verwendung von Vue3

Inhaltsverzeichnis Veränderungen im Lebenszyklus ...