VorwortWir müssen bestimmte Daten abrufen, die den Anforderungen aus der Datenbank entsprechen. Es ist einfach für uns, SQL zu schreiben, wie etwa Select ABC FROM T WHERE ID = XX. Was also macht die Datenbank, wenn wir eine solche Anfrage an die Datenbank senden? Heute nehmen wir MySQL als Beispiel, um den Abfrageprozess der MySQL-Datenbank offenzulegen und allen einige Teile der Datenbank vorzustellen. MySQL-Architektur MySQL-Architektur MySQL kann hauptsächlich in die Serverschicht und die Speicher-Engine-Schicht unterteilt werden. Die Serverebene umfasst Konnektoren, Abfrage-Caches, Analysatoren, Optimierer, Executoren usw. Alle speicherübergreifenden Engine-Funktionen sind in dieser Ebene implementiert, z. B. gespeicherte Prozeduren, Trigger, Ansichten, Funktionen usw. Es gibt auch ein allgemeines Protokollmodul, das Binlog-Protokollmodul. Die Speicher-Engine-Schicht ist für das Speichern und Abrufen von Daten verantwortlich. Sein Architekturmodus ist Plug-in-basiert und unterstützt mehrere Speicher-Engines wie InnoDB, MyISAM und Memory. Die derzeit am häufigsten verwendete Speicher-Engine ist InnoDB (das Transaktionen unterstützt), das seit MySQL Version 5.5.5 die Standardspeicher-Engine ist. AnschlüsseDer Connector ist hauptsächlich für die Benutzeranmeldung bei der Datenbank und die Authentifizierung der Benutzeridentität verantwortlich, einschließlich der Überprüfung von Kontokennwörtern, Berechtigungen und anderen Vorgängen. Wenn das Benutzerkennwort falsch ist, erhalten Sie die Fehlermeldung „Zugriff für Benutzer verweigert“ und das Client-Programm wird abgebrochen. Wenn das Kennwort des Benutzerkontos genehmigt wurde, fragt der Connector alle Berechtigungen des Benutzers in der Berechtigungstabelle ab. Alle nachfolgenden Berechtigungslogikbeurteilungen in diesem Zusammenhang basieren auf den zu diesem Zeitpunkt gelesenen Berechtigungsdaten. Mit anderen Worten: Solange die Verbindung nicht getrennt wird, ist der Benutzer nicht betroffen, selbst wenn der Administrator die Berechtigungen des Benutzers ändert. AbfragecacheNachdem der Client eine Verbindung mit dem Server hergestellt hat, fragt MySQL beim Ausführen einer Abfrageanweisung zunächst den Cache ab, um zu überprüfen, ob dieses SQL bereits zuvor ausgeführt wurde. Zuvor ausgeführte Anweisungen und ihre Ergebnisse werden in Form von Schlüssel-Wert-Paaren direkt im Speicher zwischengespeichert. Der Schlüssel ist die Abfrageanweisung und der Wert ist das Abfrageergebnis. Wenn Ihre Abfrage den Schlüssel direkt in diesem Cache finden kann, wird der Wert direkt an den Client zurückgegeben. Wenn kein Treffer vorliegt, müssen nachfolgende Vorgänge ausgeführt werden und die Ergebnisse werden nach Abschluss zwischengespeichert, um den nächsten Aufruf zu ermöglichen. Werden Ihre Augen leuchten, wenn Sie das sehen? Werden Sie den Drang verspüren, diese großartige Funktion auch zu nutzen? Tatsächlich ist es nicht empfehlenswert, hier einen Abfragecache zu verwenden. Der Abfragecache läuft sehr häufig ab. Solange eine Tabelle aktualisiert wird, werden alle Abfragecaches dieser Tabelle gelöscht. Daher ist es sehr wahrscheinlich, dass Sie sich große Mühe gegeben haben, die Ergebnisse zu speichern, diese jedoch durch ein Update gelöscht werden, bevor Sie sie verwenden können. Bei Datenbanken mit hohem Aktualisierungsdruck ist die Trefferquote des Abfragecaches sehr niedrig. Sofern es sich nicht um eine Tabelle handelt, die über einen längeren Zeitraum nicht aktualisiert wird, wie z. B. eine Systemkonfigurationstabelle, wäre es für uns nicht besser, diese Art von Systemkonfiguration auf der Konfigurationsplattform abzulegen? Die Abfrage-Cache-Funktion wurde in MySQL8.0 gelöscht. Der Beamte glaubt auch, dass diese Funktion nur wenige tatsächliche Anwendungsszenarien hat, sodass sie einfach gelöscht wurde. AnalysatorWenn MySQL den Abfragecache nicht erreicht, wird der Analysator aufgerufen, der hauptsächlich zum Analysieren des Zwecks der SQL-Anweisung verwendet wird. Der Analysator gliedert sich im Wesentlichen in die folgenden zwei Schritte:
Der lexikalische Analysator zerlegt die gesamte Abfrageanweisung in verschiedene Token, und der Syntaxanalysator wandelt die „verschiedenen Token“ in Kombinationen um, die basierend auf der definierten Systemsprache für MySQL sinnvoll sind. Schließlich generiert das System einen Syntaxbaum (AST), die Datenstruktur, auf die sich der Optimierer stützt. OptimiererNach dem Analyzer weiß MySQL, was Sie tun werden. Bevor die Ausführung beginnt, muss es zunächst vom Optimierer verarbeitet werden. Warum brauchen wir einen Optimierer?
Kurz gesagt, der Optimierer ändert die Form des Syntaxanalysebaums, konvertiert den Syntaxanalysebaum in einen Abfragebaum und bestimmt den Ausführungsplan. StellantriebMySQL weiß durch den Analysator, was Sie tun möchten, und weiß durch den Optimierer, wie es zu tun ist. Daher wechselt es in die Executor-Phase und beginnt mit der Ausführung der Anweisung. Beim Starten der Ausführung muss zunächst überprüft werden, ob der Benutzer die Berechtigung zum Ausführen der Abfrage hat. Wenn nicht, wird eine Fehlermeldung zurückgegeben, die besagt, dass der Benutzer keine Berechtigung hat. Wenn die Berechtigung vorliegt, wird die Schnittstelle der Engine aufgerufen und das Ergebnis der Schnittstellenausführung zurückgegeben. Anweisungsanalyse Lassen Sie uns den Ausführungsprozess der MySQL-Abfrage mit der folgenden echten SQL-Abfrageanweisung analysieren: Wählen Sie ID, Name, Geschlecht und Telefon des Benutzers t aus, wobei t.Alter = „26“ und t.Konto = „javadaily“ ist.
a. Fragen Sie zuerst den Benutzer mit dem Konto „javadaily“ ab und prüfen Sie dann, ob das Alter 26 beträgt. b. Suchen Sie zuerst den Benutzer mit dem Alter „26“ und fragen Sie dann den Benutzer mit dem Konto „javadaily“ ab.
ZusammenfassenDies ist das Ende dieses Artikels zum Verständnis des Ausführungsprozesses von MySQL-Abfrageanweisungen. Weitere relevante Inhalte zum Ausführungsprozess von MySQL-Abfragen finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! Das könnte Sie auch interessieren:
|
<<: Verwenden Sie vue3, um ein Mensch-Katze-Kommunikations-Applet zu implementieren
>>: Ist ein Design, das den Designspezifikationen entspricht, ein gutes Design?
Inhaltsverzeichnis 1. Verwendung von Pfeilfunktio...
Inhaltsverzeichnis Tutorial-Reihe 1. Benutzerverw...
Wenn wir Vue zur Entwicklung verwenden, kann eine...
(1) HTML: HyperText Markup Language, die im Wesen...
Count(*) oder Count(1) oder Count([column]) sind ...
JS-Lauftrilogie js-Ausführungscode ist in drei Sc...
Der erste Schritt beim Design ist immer die Optimi...
Warum optimieren: Beim Start des eigentlichen Pro...
Wenn die Tabelle Zehntausende Datensätze enthält,...
Vorwort: In den vorherigen Artikeln wurde die Ver...
Was bedeutet Strg+C, Strg+D, Strg+Z in Linux? Str...
In diesem Artikel wird der spezifische Code für J...
1. Kurze Einführung Vue.js ermöglicht es Ihnen, I...
Bei der Entwicklung begegnen wir häufig dieser Sit...
Dies ist der Inhalt von React 16. Es ist nicht di...