Datenbankausführungsplan
„Ein Datenbankausführungsplan ist eine generierte Liste der Schritte, die für das Datenbanksystem die effizienteste Möglichkeit bilden, auf Informationen zuzugreifen oder sie zu ändern.“ (vgl. Justin Clarke, SQL Hacking).
Der Ausführungsplan beinhaltet die jeweiligen Schritte, die eine Datenbank beim Abarbeiten einer SQL-Anweisung ausführt. Der Ausführungsplan wird auch execution plan oder explain plan genannt. Das Erstellen von Ausführungspläne wird auch als Kompilieren bezeichnet.
Der Ausführungsplan gibt beispielsweise einen Aufschluss darüber welche Indizes benutzt werden, in welcher Reihenfolge die Zugriffe auf die verschiedenen Tabellen erfolgen, und welche Algorithmen für Join-, Sortier- und Gruppier-Operationen zum Zuge kommen.
Sie werden dazu genutzt, um Abfragen so wirtschaftlich wie nur möglich zu verarbeiten und zu beantworten. Bei der ersten Ausführung einer Abfrage wird diese analysiert. Hierbei werden beispielsweise die aufgerufenen Tabellen herausgefiltert oder es wird ermittelt, wie Ergebnisse vereinigt oder kombiniert werden müssen (Datenbankausführungsplan). Diese Pläne werden in einem Bereich des Arbeitsspeichers abgelegt (Plancache).
Vergleicht man dies mit anderen Programmiersprachen ähnelt der Ausführungsplan dem Bytecode von Scriptsprachen wie z.B. Python.
Wird eine SQL-Anweisung ausgeführt, wird zwischen der Optimierungsphase und der eigentlichen Ausführung der Ausführungsplan erstellt.
Weil der Ausführungsplan die Abläufe auf einer ähnlichen Abstraktionsebene darstellt wie SQL, kann man einen Ausführungsplan sehr schnell lesen, durch die einheitliche Formatierung meist schneller als die ursprüngliche SQL-Anweisung.
Beispiel eines Ausfühungsplans:
Der in der Grafik obenstehende Select-Befehl wird darunter visualisiert. Dargestellt sind die einzelnen Aufrufe, ihre Verbindungen zueinander sowie die entsprechend verbrauchte Zeit und deren Kosten.
Zusammenfassend werden somit im Datenbankausführungsplan alle verarbeiteten SQL-Anweisungen protokolliert.
Bildquellen:
- Datenbank-Ausführungspläne lesen und verstehen: https://www.admin-magazin.de/Das-Heft/2012/06/Datenbank-Ausfuehrungsplaene-lesen-und-verstehen
- Anzeigen eines tatsächlichen Ausführungsplans: https://docs.microsoft.com/de-de/sql/relational-databases/performance/display-an-actual-execution-plan?view=sql-server-ver15