Collection Contents Zurück Weiter PDF

ASA SQL-Benutzerhandbuch

Abfragen optimieren und ausführen

Die Rolle des Optimierers


Die Rolle des Optimierers besteht darin, einen effizienten Weg zum Ausführen von SQL-Anweisungen zu finden. Der Optimierer stellt die ausgewählte Methode in Form eines Zugriffplans dar. Der Zugriffsplan beschreibt, welche Tabellen durchsucht werden müssen, welche Indizes ggf. für jede Tabelle zu verwenden sind, welche Join-Strategie anzuwenden ist und in welcher Reihenfolge die Tabellen gelesen werden müssen. Häufig kann dasselbe Ziel mit verschiedenen Plänen erreicht werden. Weitere Variable können die Zahl möglicher Zugriffspläne noch erhöhen.

Kosten-basierend 

Der Optimierer beginnt aus den verfügbaren Möglichkeiten auszuwählen, indem er effiziente und manchmal auch herstellerspezifische Algorithmen verwendet. Er legt seinen Entscheidungen Voraussagen über den Ressourcenverbrauch der jeweiligen Abfrage zugrunde. Der Optimierer berücksichtigt sowohl die Kosten der Plattenspeicher-Zugriffsvorgänge, als auch die geschätzten CPU-Kosten der einzelnen Vorgänge.

Syntax-unabhängig 

Die meisten Befehle können unter Verwendung der SQL-Sprache auf viele Arten ausgedrückt werden. Diese Ausdrücke sind semantisch gleichwertig, indem sie dieselbe Aufgabe durchführen, aber sie können sich in ihrer Syntax grundlegend unterscheiden. Mit wenigen Ausnahmen entwirft der Adaptive Server Anywhere-Optimierer einen geeigneten Zugriffsplan, der nur auf der Semantik der einzelnen Anweisungen aufbaut.

Syntaktische Unterschiede haben gewöhnlich keine Auswirkungen, auch wenn sie substanziell erscheinen mögen. So haben zum Beispiel Unterschiede in der Reihenfolge von Prädikaten, Tabellen und Attributen in der Abfrage keine Auswirkungen auf die Auswahl im Zugriffsplan. Auch wird der Optimierer nicht davon beeinflusst, ob eine Abfrage eine Ansicht enthält.

Ein guter Plan, nicht unbedingt der beste Plan 

Das Ziel des Optimierers ist es, einen guten Plan zu finden. Idealerweise würde der Optimierer den effizientesten Plan, der zur Verfügung steht, auswählen, doch das ist oft nicht durchführbar. Bei einer komplizierten Abfrage gibt es zahlreiche mögliche Lösungen.

Wie effizient der Optimierer auch sein mag, so benötigt doch das Analysieren der einzelnen Optionen Zeit und Ressourcen. Der Optimierer vergleicht die Kosten weiterer Optimierungen mit den Kosten, die ein Ausführen des bisher besten Plans verursachen würde. Wenn ein Plan mit relativ geringen Kosten entwickelt worden ist, stoppt der Optimierer und ermöglicht es, dass dieser Plan ausgeführt wird. Eine weitere Optimierung könnte mehr Ressourcen als das Ausführen eines bereits gefundenen Zugriffsplans verbrauchen.

Im Fall von kostenträchtigen und komplizierten Abfragen arbeitet der Optimierer länger. Bei sehr kostenträchtigen Abfragen dauert die Ausführung möglicherweise so lange, dass eine Verzögerung feststellbar ist.


Collection Contents Zurück Weiter PDF