Grundlegendes zum Parser und dem Abfrageoptimierer

Abgeschlossen

Parser

Der Parser ist ein interner Prozess, der die Abfrage in Token umbricht. Der Parser setzt sich aus zwei Teilen zusammen:

  • MySQL Grammatik-Regelprüfer
  • Lexikalischer Scanner

Der Parser erstellt dann einen Parsebaum und der Präprozessor führt weitere Prüfungen durch, z. B. ob Tabellen oder Spalten vorhanden sind. Der Vorprozessor überprüft auch Berechtigungen.

Der Parser hat die Aufgabe, den Abfragetext in eine gültige Baumstruktur zu übersetzen, die vom Abfrageoptimierer verwendet werden kann.

Abfrageoptimierer

Der Abfrageoptimierer übernimmt den Parsebaum und wandelt ihn in einen Abfrageausführungsplan um. Der Abfrageoptimierer muss den optimalen Plan unter vielen möglichen Plänen finden, indem er die Kosten der verschiedenen Pläne vorhersagt. Der Abfrageoptimierer fragt die entsprechende Speicher-Engine nach Statistiken wie z. B. der Anzahl der Seiten für jede Tabelle oder der Länge der Zeilen. Da der Abfrageoptimierer bei der Erstellung von Statistiken auf die Speicher-Engine angewiesen ist, stehen ihm nicht immer die benötigten Statistiken zur Verfügung, oder sie sind nicht immer aktuell und genau.

Hinweis

Statistiken werden von der jeweiligen Speicher-Engine erstellt, und jede Speicher-Engine erstellt und speichert unterschiedliche Statistiken. Ein Beispiel: InnoDB speichert keine Zeilenlängenstatistiken.

Sie können mit Hilfe der EXPLAIN-Anweisung sehen, wie Azure Database for MySQL eine Abfrage ausgeführt hat. EXPLAIN kann als Präfix für SELECT, INSERT, DELETE, REPLACE, und UPDATE verwendet werden. Wenn Sie die EXPLAIN-Anweisung verwenden, erklärt MySQL den gewählten Ausführungsplan, anstatt ihn auszuführen.

Hinweis

Die EXPLAIN-Anweisung ist synonym mit der DESCRIBE. In der Praxis wird EXPLAIN verwendet, um anzuzeigen, wie MySQL eine Abfrage ausführt, und DESCRIBE wird verwendet, um Informationen zu Spalten in einer Tabelle anzuzeigen. EXPLAIN und DESCRIBE erfordern dieselben Berechtigungen wie die ursprüngliche Anweisung. EXPLAIN erfordert außerdem die SHOW VIEW-Berechtigung , um den Ausführungsplan für eine Ansicht anzuzeigen.

Sie können auch die Kosten der letzten ausgeführten Abfrage ermitteln. Zeigen Sie nach dem Ausführen der Abfrage die Kosten an, indem Sie Folgendes ausführen:

SHOW STATUS LIKE 'last_query_cost';

Diese Anweisung zeigt die Anzahl von Seitenlesevorgängen an, die zur Ausführung der Abfrage erforderlich sind. Indem Sie die last_query_cost nach Variationen Ihrer Abfrage anzeigen, können Sie die relativen „Kosten“ jeder Abfrage herausfinden.

Die Architektur von MySQL ist so konzipiert, dass viele erfolgreiche Abfragen gleichzeitig ausgeführt werden können. Dort, wo Sie die Wahl haben, sollten Sie lieber mehr kleine Abfragen durchführen als weniger große und komplexe Abfragen.

Tipp

DESCRIBE und EXPLAIN sind in MySQL als Hilfsanweisungen bekannt. Es gibt vier Utility-Anweisungen: DESCRIBE, EXPLAIN, HELP und USE. HELP gibt Hilfe zu einem bestimmten Thema zurück. Mit „HELP 'data types'“ werden beispielsweise alle Datentypen von MySQL angezeigt. Mit USE wird MySQL mitgeteilt, auf welche Datenbank die nachfolgenden Anweisungen angewendet werden sollen (Beispiel: USE MyDatabase).