Heim >Datenbank >MySQL-Tutorial >Wie SQL in der MySQL-Datenbank ausgeführt wird
Eine Reihe von Ausführungsprozessen für Abfrageanweisungen und Aktualisierungsanweisungen durchlaufen ebenfalls den gleichen Schritt:
" class="lazyload" src="https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/d529960ec1dd496ca90860641bcaa093~tplv-k3u1fbpfcp-watermark.image" data- style="max-width:90%" data- style="max-width:90%">Zunächst während Ausführung: Sie müssen zunächst eine Verbindung zur Datenbank herstellen, bevor Sie eine Anweisung erstellen. Dies ist die Aufgabe des Connectors im ersten Schritt Oktober-Cache wird nicht empfohlen.
Als nächstes führt der Analysator eine Syntaxanalyse und eine lexikalische Analyse durch. Nachdem er weiß, dass es sich um eine Aktualisierungsanweisung handelt, entscheidet der Optimierer, welcher Index verwendet werden soll, und dann ist der Ausführende für die spezifische Ausführung verantwortlich. Er findet zuerst diese Zeile und dann aktualisiert es.
Im Gegensatz zur Aktualisierung der Abfrageanweisung umfasst der Aktualisierungsprozess auch zwei wichtige Protokolle. Wir haben dies auch im vorherigen Artikel vorgestellt. Wenn Sie interessiert sind, finden Sie den Artikel „Die zwei Protokollsysteme von MySQL“. hier viel vorstellen.
Lassen Sie uns den Update-Vorgang anhand eines einfachen Beispiels analysieren.
Wir erstellen zunächst eine Tabelle mit einer Primärschlüssel-ID und einem Ganzzahlfeld c:
mysql> create table demo T (ID int primarty ,c int);复制代码
Dann addieren wir 1 zum Wert der Zeile mit ID=2
mysql> update table demo set c = c + 1 where ID = 2;复制代码
Als nächstes werfen wir einen Blick auf den Ausführungsablauf des Updates Anweisung: Das helle Kästchen in der Abbildung stellt dar, was in der Speicher-Engine ausgeführt wird, und das farbige Kästchen stellt dar, was im Executor ausgeführt wird.
Wir können sehen, dass das Redolog-Schreiben am Ende in zwei Schritte unterteilt ist: Vorbereiten und Festschreiben. Dies wird oft als „zweistufiges Festschreiben“ bezeichnet.
Warum benötigt das Protokoll eine „zweiphasige Einreichung“?
Da Redo-Log und Binlog die Protokolle der Speicher-Engine bzw. des Executors sind, handelt es sich um zwei unabhängige Logiken. Wenn die zweistufige Übermittlung nicht verwendet wird, treten einige Probleme auf, unabhängig davon, welche zuerst und welche später übermittelt wird . Schauen wir uns das obige Beispiel an. Nehmen wir an, dass der aktuelle Wert der Zeile mit der ID=2 0 ist. Nachdem das erste Protokoll während des Aktualisierungsvorgangs geschrieben wurde, kommt es zu einem Absturz.
MySQL-Video-Tutorial
Das obige ist der detaillierte Inhalt vonWie SQL in der MySQL-Datenbank ausgeführt wird. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!