Heim  >  Artikel  >  Datenbank  >  Detaillierte Einführung in das Funktionsprinzip von MySQL

Detaillierte Einführung in das Funktionsprinzip von MySQL

王林
王林nach vorne
2019-08-21 14:09:173932Durchsuche

1. Komponenten von MySQL

Mysql besteht aus SQL-Schnittstelle, Parser, Optimierer, Cache und Speicher-Engine.

2. MySQL-Arbeitsprinzipdiagramm

Detaillierte Einführung in das Funktionsprinzip von MySQL

3. Beschreibung jeder Komponente des MySQL-Schemadiagramms

3-1: Konnektoren

interagieren mit SQL-Anweisungen in anderen Programmiersprachen wie PHP, Java usw.

3-2: Verwaltungsdienste und Dienstprogramme

Systemverwaltungs- und Kontrolltools

3-3, Verbindungspool (Verbindungspool)

Pufferbenutzer verwalten Verbindung, Thread-Verarbeitung und andere Anforderungen, die Caching erfordern

3-4. SQL-Schnittstelle (SQL-Schnittstelle)

Akzeptiert den SQL-Befehl des Benutzers und gibt die Ergebnisse zurück, die der Benutzer abfragen muss. Wählen Sie beispielsweise aus, um die SQL-Schnittstelle aufzurufen

3-5, Parser (Parser)

Wenn der SQL-Befehl an den Parser übergeben wird, wird er vom Parser überprüft und analysiert.

Hauptfunktionen des Parsers:

a. Zerlegen Sie die SQL-Anweisung in eine Datenstruktur und übergeben Sie diese Struktur an nachfolgende Schritte. Die anschließende Übertragung und Verarbeitung von SQL-Anweisungen basiert auf dieser Struktur 🎜 >

b. Wenn während der Zerlegung ein Fehler auftritt, bedeutet dies, dass die SQL-Anweisung unzumutbar ist und die Anweisung nicht weiter ausgeführt wird

3-6 >

Die SQL-Anweisung verwendet den Abfrageoptimierer, um die Abfrage vor der Abfrage zu optimieren (es werden mehrere Ausführungspläne generiert, und schließlich wählt die Datenbank den am besten optimierten Plan zur Ausführung aus und gibt die Ergebnisse so schnell wie möglich zurück). Er verwendet „select-“ Projektion" -Join"-Strategie für die Abfrage.

Sie können es anhand eines Beispiels verstehen: select uid,name from user where gender = 1;

Diese Auswahlabfrage wählt zuerst basierend auf der where-Anweisung aus, anstatt zuerst alle Tabellen abzufragen. Geschlechtsfilterung durchführen

Diese Auswahlabfrage führt zunächst eine Attributprojektion basierend auf UID und Name durch, anstatt alle Attribute herauszunehmen und dann zu filtern

Verbinden Sie diese beiden Abfragebedingungen, um das endgültige Abfrageergebnis zu generieren

3-7. Cache und Puffer (Abfrage-Cache)

Wenn der Abfrage-Cache ein Treffer-Abfrageergebnis hat, kann die Abfrageanweisung Daten direkt aus dem Abfrage-Cache abrufen.

Dieser Caching-Mechanismus besteht aus einer Reihe kleiner Caches. Zum Beispiel Tabellencache, Datensatzcache, Schlüsselcache, Berechtigungscache usw.

3-8. Engine (Speicher-Engine)

Die Speicher-Engine ist das spezifische Subsystem in MySql, das sich damit befasst Dateien und ist auch MySQL Einer der einzigartigsten Orte.

Die Speicher-Engine von MySQL ist ein Plug-in. Es passt einen Dateizugriffsmechanismus an, der auf einer abstrakten Schnittstelle der von MySql AB bereitgestellten Dateizugriffsschicht basiert (dieser Zugriffsmechanismus wird als Speicher-Engine bezeichnet).

4. SQL-Anweisungsausführungsprozess

Die Datenbank wird normalerweise nicht direkt verwendet. Stattdessen rufen andere Programmiersprachen MySQL über SQL-Anweisungen auf, die von MySQL verarbeitet werden und zur Ausführung zurückgegeben. Wie verarbeitet MySQL die SQL-Anweisung, nachdem sie empfangen wurde?

Zuerst interagiert die Anfrage des Programms mit ihm über die MySQL-Konnektoren. Nachdem die Anfrage eintrifft, wird sie vorübergehend im Verbindungspool gespeichert und vom Prozessor verwaltet (

). Wenn die Anforderung aus der Warteschlange in die Verarbeitungswarteschlange gelangt, sendet der Manager die Anforderung an die SQL-Schnittstelle (

). Nachdem die SQL-Schnittstelle die Anforderung erhalten hat, wird sie gehasht und mit dem Ergebnis im Cache verglichen. Wenn eine vollständige Übereinstimmung vorliegt, wird das Verarbeitungsergebnis direkt über den Cache zurückgegeben. Management Serveices & UtilitiesSQL Interface (1) Die SQL-Schnittstelle wird an den nachfolgenden Interpreter (Parser) übergeben. Der Interpreter beurteilt, ob die SQL-Anweisung korrekt ist oder nicht, und konvertiert sie in eine Datenstruktur, wenn sie korrekt ist.

(2) Nachdem der Interpreter verarbeitet wurde, gelangt er zum Optimierer (Optimierer), der mehrere Ausführungspläne generiert. Am Ende wählt die Datenbank den am besten optimierten Plan für die Ausführung aus und gibt die Ergebnisse zurück schnellstmöglich.

(3) Nach der Ermittlung des optimalen Ausführungsplans kann die SQL-Anweisung zur Verarbeitung an die Speicher-Engine (Engine) übergeben werden. Die Speicher-Engine ruft die entsprechenden Daten vom Back-End-Speichergerät ab und gibt sie zurück es auf den ursprünglichen Pfad zum Programm.

5. Hinweis


(1) So werden Abfragedaten zwischengespeichert

Die Speicher-Engine verarbeitet die Daten und gibt sie an das Programm zurück Gleichzeitig wird eine Kopie der Daten im Cache gespeichert, sodass die nächste gleiche Anfrage schneller verarbeitet werden kann. Die spezifische Situation besteht darin, dass MySQL die Abfrageanweisung, die Ausführungsergebnisse usw. hasht, sie im Cache behält und auf die nächste Abfrage wartet.

(2) Der Unterschied zwischen Puffer und Cache

Wie Sie dem MySQL-Schema entnehmen können, gibt es tatsächlich zwei Puffer und Caches im Cache, daher der Unterschied zwischen ihnen:

Einfach ausgedrückt ist der Puffer ein Schreib-Cache und der Cache ein Lese-Cache.

(3) So ermitteln Sie, ob die erforderlichen Daten im Cache zwischengespeichert wurden

Hier liegt möglicherweise ein Missverständnis bei der Verarbeitung von SQL-Anweisungen vor, um festzustellen, ob die Abfrageergebnisse vorhanden sind Zwischengespeichert wird der gesamte Prozess erneut durchlaufen, das Ausführungsergebnis abrufen und es dann mit dem erforderlichen Ergebnis vergleichen, um festzustellen, ob ein Treffer vorliegt. Auf diese Weise spielt es keine Rolle, ob der Abfrageinhalt im Cache zwischengespeichert ist. Sie müssen den gesamten Prozess durchlaufen. Welchen Vorteil hat das Caching?

Tatsächlich ist dies nicht der Fall. Nach der ersten Abfrage hasht MySQL die Abfrageanweisung und die Abfrageergebnisse und speichert sie im Cache. Nachdem die SQL-Abfrage eintrifft, wird sie auf die gleiche Weise gehasht Wenn die beiden Hash-Werte gleich sind, handelt es sich um einen Treffer und das Abfrageergebnis wird aus dem Cache zurückgegeben.

Ich hoffe, dieser Artikel kann Studenten, die Datenbanken lernen, etwas helfen. Wenn in dem Artikel etwas nicht stimmt, weisen Sie ihn bitte darauf hin.

Weitere Fragen zu MySQL finden Sie auf der chinesischen PHP-Website: MySQL-Video-Tutorial

Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in das Funktionsprinzip von MySQL. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen