Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (Deutsch) » SQL Anywhere Server - SQL-Benutzerhandbuch » Abfrageverarbeitung » Abfragen optimieren und ausführen

 

Phasen der Abfrageverarbeitung

Dieser Abschnitt beschreibt die Phasen, die eine Anweisung durchläuft, beginnend mit der Kommentierungsphase und endend mit der Ausführung. Darüber hinaus werden die der Planung des Optimierers zugrunde liegenden Annahmen beschrieben und die Selektivitätsschätzung, die Kostenschätzung und die Schritte der Abfrageverarbeitung behandelt.

Anweisungen, die keine Ergebnismengen haben, wie UPDATE- oder DELETE-Anweisungen, durchlaufen die Phasen der Abfrageverarbeitung

  • Kommentierungsphase   Wenn der Datenbankserver eine Abfrage erhält, verwendet er einen Parser, um die Anweisung zu analysieren, und wandelt sie in eine algebraische Darstellung um, die auch als Parse-Baum bezeichnet wird. In diesem Stadium kommt der Parse-Baum für semantische und syntaktische Prüfungen zum Einsatz (z.B. die Bestätigung, dass die in der Abfrage referenzierten Objekte im Katalog vorhanden sind) sowie für Berechtigungsprüfungen, Transformationen von KEY JOINs und NATURAL JOINs unter Verwendung von definierten, referenziellen Integritätsregeln und die Expansion von nicht materialisierten Ansichten. Die Ausgabe dieser Phase ist eine umgeschriebene Abfrage in Form eines Parse-Baums, der die Kommentare (erweiterte Informationen wie Datentypen) zu allen Objekten enthält, die in der ursprünglichen Abfrage referenziert wurden.

  • Phase der semantischen Transformationen   In dieser Phase durchläuft die Abfrage iterative semantische Transformationen. Während die Abfrage noch als kommentierter Parse-Baum dargestellt wird, werden in dieser Phase Neuschreibungsoptimierungen angewendet wie z.B. Join-Eliminierungen, DISTINCT-Eliminierungen und Prädikatnormalisierung. Die semantischen Transformationen in dieser Phase werden gemäß den semantischen Transformationsregeln durchgeführt, die heuristisch auf die Darstellung des Parse-Baums angewendet werden. Weitere Hinweise finden Sie unter Semantische Abfragentransformation.

    Abfragen mit Plänen, die bereits vom Datenbankserver im Cache abgelegt wurden, überspringen diese Phase der Abfrageverarbeitung. Einfache Anweisungen können ebenfalls diese Phase der Abfrageverarbeitung überspringen. Viele Anweisungen, die eine heuristische Planauswahl im Bypass-Mechanismus des Optimierers verwenden, werden von der Phase der semantischen Transformationen nicht abgearbeitet. Die Komplexität der SQL-Anweisung legt fest, ob diese Phase an einer Anweisung angewendet wird. Weitere Hinweise finden Sie unter Planzwischenspeicherung und Eignung für ein Überspringen der Abfrageverarbeitungsphase.

  • Optimierungsphase   In der Optimierungsphase wird eine andere interne Darstellung der Abfrage - die Abfragenoptimierungsstruktur - benutzt, die aus dem Parse-Baum erstellt wird. Weitere Hinweise finden Sie unter So funktioniert der Optimierer.

    Abfragen mit Plänen, die bereits vom Datenbankserver im Cache abgelegt wurden, überspringen diese Phase der Abfrageverarbeitung. Zusätzlich können einfache Anweisungen ebenfalls diese Phase der Abfrageverarbeitung überspringen. Weitere Hinweise finden Sie unter Planzwischenspeicherung und Eignung für ein Überspringen der Abfrageverarbeitungsphase.

    Diese Phase wird in zwei Unterphasen aufgeteilt:

    • Vorphase der Optimierung   In der Vorphase der Optimierung wird die Optimierungsstruktur durch die Informationen vervollständigt, die später in der Enumerationsphase benötigt werden. In dieser Phase wird die Abfrage analysiert, um alle relevanten Indizes und materialisierten Ansichten zu finden, die im Zugriffsplan der Abfrage benutzt werden können. Beispielsweise ermittelt der Algorithmus für die Ansichtenübereinstimmung in dieser Phase alle materialisierten Ansichten, die benutzt werden können, um eine Abfrage ganz oder teilweise zu erfüllen. Zusätzlich erstellt der Optimierer aufgrund der Prädikat-Analyse der Abfrage alternative Join-Methoden, die in der Enumerationsphase benutzt werden können, um einen Join für die Tabellen der Abfrage herzustellen. In dieser Phase wird keine Entscheidung über den besten Zugriffsplan für die Abfrage getroffen. Das Ziel dieser Phase ist die Vorbereitung auf die Enumerationsphase.

    • Enumerationsphase   In dieser Phase enumeriert der Optimierer mögliche Zugriffspläne für die Abfrage und benutzt dabei die Bausteine, die in der Vorphase der Optimierung generiert wurden. Der Suchbereich ist sehr groß und der Optimierer verwendet einen herstellereigenen Enumerationsalgorithmus, um die Zugriffspläne zu generieren und zu kürzen. Für jeden Plan wird eine Kostenschätzung berechnet, um den aktuellen Plan mit dem bisher besten gefundenen Plan zu vergleichen. Bei diesen Vergleichen werden kostenträchtige Pläne verworfen. Bei der Kostenschätzung werden die Ressourcennutzung wie etwa Platten- und Arbeitsspeichervorgänge, die geschätzte Anzahl von Zeilen für die Zwischenergebnisse, das Optimierungsziel, die Cachegröße usw. berücksichtigt. Das Resultat der Enumerationsphase ist der beste Zugriffsplan für die Abfrage.

  • Planerstellungsphase   In der Planerstellungsphase wird der beste Zugriffsplan verwendet, um die entsprechende endgültige Darstellung des Abfrageausführungsplans zum Ausführen der Abfrage zu erstellen. Sie können eine grafische Version des Plans in der Plananzeige in Interactive SQL einsehen. Der grafische Plan hat eine Baumstruktur, in der jeder Knoten ein physischer Operator ist, der einen spezifischen relationalen, algebraischen Vorgang implementiert. "Hash-Join" und "Ordered-Group-By" sind z.B. physische Operatoren, die einen Join bzw. einen Group-by-Vorgang implementieren. Weitere Hinweise finden Sie unter Grafische Pläne lesen.

    Abfragen mit Plänen, die bereits vom Datenbankserver im Cache abgelegt wurden, überspringen diese Phase der Abfrageverarbeitung. Weitere Hinweise finden Sie unter Planzwischenspeicherung und Eignung für ein Überspringen der Abfrageverarbeitungsphase.

  • Ausführungsphase   Das Ergebnis der Abfrage wird durch den Abfrageausführungsplan berechnet, der in der Planerstellungsphase erstellt wurde.


Eignung für ein Überspringen der Abfrageverarbeitungsphase