Verarbeiten von SQL-Anweisungen
Bevor Sie die Techniken für die programmgesteuerte Verwendung von SQL besprechen, müssen Sie diskutieren, wie eine SQL-Anweisung verarbeitet wird. Die beteiligten Schritte sind für alle drei Techniken üblich, obwohl jede Technik sie zu unterschiedlichen Zeiten ausführt. Die folgende Abbildung zeigt die Schritte zur Verarbeitung einer SQL-Anweisung, die im restlichen Abschnitt behandelt werden.
Zum Verarbeiten einer SQL-Anweisung führt ein DBMS die folgenden fünf Schritte aus:
Das DBMS analysiert zunächst die SQL-Anweisung. Sie bricht die Anweisung in einzelne Wörter auf, die als Token bezeichnet werden, stellt sicher, dass die Anweisung über ein gültiges Verb und gültige Klauseln usw. verfügt. Syntaxfehler und Rechtschreibfehler können in diesem Schritt erkannt werden.
Das DBMS überprüft die Anweisung. Sie überprüft die Anweisung anhand des Systemkatalogs. Sind alle in der Anweisung benannten Tabellen in der Datenbank vorhanden? Sind alle Spalten vorhanden und sind die Spaltennamen eindeutig? Verfügt der Benutzer über die erforderlichen Berechtigungen zum Ausführen der Anweisung? In diesem Schritt können bestimmte semantische Fehler erkannt werden.
Das DBMS generiert einen Zugriffsplan für die Anweisung. Der Zugriffsplan ist eine binäre Darstellung der Schritte, die zum Ausführen der Anweisung erforderlich sind; es ist die DBMS-Entsprechung von ausführbarem Code.
Der DBMS optimiert den Zugriffsplan. Es untersucht verschiedene Möglichkeiten zur Durchführung des Zugangsplans. Kann ein Index verwendet werden, um eine Suche zu beschleunigen? Sollte der DBMS zuerst eine Suchbedingung auf Tabelle A anwenden und sie dann mit Tabelle B verbinden oder mit der Verknüpfung beginnen und danach die Suchbedingung verwenden? Kann eine sequenzielle Suche durch eine Tabelle vermieden oder auf eine Teilmenge der Tabelle reduziert werden? Nach der Erkundung der Alternativen wählt die DBMS eine davon aus.
Das DBMS führt die Anweisung durch Ausführen des Zugriffsplans aus.
Die schritte, die zum Verarbeiten einer SQL-Anweisung verwendet werden, variieren in der Menge des benötigten Datenbankzugriffs und der benötigten Zeit. Das Analysieren einer SQL-Anweisung erfordert keinen Zugriff auf die Datenbank und kann sehr schnell ausgeführt werden. Optimierung ist dagegen ein sehr CPU-intensiver Prozess und erfordert Zugriff auf den Systemkatalog. Bei einer komplexen, multitablen Abfrage kann der Optimierer tausende verschiedene Möglichkeiten zum Ausführen derselben Abfrage untersuchen. Die Kosten für die Ineffiziente Ausführung der Abfrage sind jedoch in der Regel so hoch, dass die in der Optimierung aufgewendete Zeit mehr als bei erhöhter Abfrageausführungsgeschwindigkeit wiedererlangt wird. Dies ist noch wichtiger, wenn derselbe optimierte Zugriffsplan immer wieder verwendet werden kann, um sich wiederholende Abfragen auszuführen.