Ausführungspläne für SQL-Abfragen werden generiert, wenn ein Abfrageoptimierer die effizienteste Methode zum Bereitstellen der von einer Abfrage angeforderten Daten bestimmt. Diese Pläne sind eine Darstellung der Datenbankoperationen, die eine Abfrage ausführt, und zeigen, welche Objekte die Abfrage verwendet, welche Verwendungsarten und wie sie verwendet werden.
Es ist allgemein bekannt, dass Abfragen mit schlechter Leistung ein Schlüsselindikator dafür sind, dass in einer Datenbank etwas nicht stimmt. Ein Blick „unter die Haube“ des Ausführungsplans einer Abfrage ist also eine der besten Möglichkeiten, um die Ursache des Leistungsproblems zu ermitteln.
Die in einem SQL-Ausführungsplan verfügbaren Informationen sind für DBAs von unschätzbarem Wert, um Probleme mit der SQL Server-Abfrageleistung zu beheben, da sie es ihnen ermöglichen, die Ursache des Problems zu finden und die Abfrage nach Bedarf zu optimieren.
Die Untersuchung von SQL-Ausführungsplänen ist einer der ersten Schritte bei der Leistungsoptimierung, da der Plan die wahrscheinlichsten Fehlerquellen innerhalb einer Abfrage deutlich hervorhebt, darunter teure Operatoren, eine ungewöhnliche Anzahl von Datensätzen, die zwischen Operatoren fließen, und zusätzliche Operatoren.
DBAs profitieren auch von Ausführungsplanwarnungen, die Benutzer auf Probleme wie tempdb-Verschüttungen und fehlende Indizes aufmerksam machen.
Typen von SQL-Ausführungsplänen
Es gibt zwei Haupttypen von SQL-Ausführungsplänen:geschätzte Ausführungspläne und tatsächliche Schätzungspläne.
Geschätzte Ausführungspläne lassen sich am besten als eine Art Wettervorhersage beschreiben. Wie der Name schon sagt, verwenden geschätzte Ausführungspläne ungefähre Berechnungen, Statistiken und andere Parameter, um die Schritte zu schätzen, denen die SQL Server-Engine folgen kann, um die gesendete Abfrage nach dem Analysieren der Abfrage auszuführen.
Sie müssen die Abfrage nicht ausführen, um diese Art von Ausführungsplan zu generieren, daher eignet sie sich gut für komplexe Abfragen, für die das Erstellen eines tatsächlichen Ausführungsplans lange dauern würde.
Tatsächliche Ausführungspläne führen die übermittelte Abfrage aus und zeigen dann die Schritte an, die während der Ausführung aufgetreten sind. Dieser Plantyp zeigt reale Berechnungen und die tatsächlichen (nicht geschätzten) Schritte, die von der SQL Server-Engine befolgt werden.
Da diese Art von Ausführungsplan die Abfrage tatsächlich ausführt, ist sie eine gute Wahl für die Fehlerbehebung bei Problemen mit der Abfrageleistung.
So erstellen Sie einen SQL-Ausführungsplan
Hackernoon bietet eine kurze Beschreibung, wie geschätzte und tatsächliche Ausführungspläne erstellt werden. Der Prozess kann auf die folgenden Schritte reduziert werden:
Generieren Sie einen geschätzten Ausführungsplan
- Zur Datenbank gehen
- Markieren Sie die Abfrage
- Klicken Sie auf „Abfrage“
- Klicken Sie auf „Geschätzten Ausführungsplan anzeigen“ oder verwenden Sie die Tastenkombination Strg + L
Generieren Sie einen tatsächlichen Ausführungsplan
- Zur Datenbank gehen
- Markieren Sie die Abfrage
- Klicken Sie auf „Abfrage“
- Klicken Sie auf „Aktuellen Ausführungsplan einschließen“ oder verwenden Sie die Tastenkombination Strg + M
In der offiziellen Microsoft-Dokumentation finden Sie eine detaillierte Erläuterung, wie geschätzte Ausführungspläne und tatsächliche Ausführungspläne erstellt werden.
Warum geschätzte und tatsächliche SQL-Ausführungspläne unterschiedlich sein können
Im Allgemeinen werden geschätzte und tatsächliche Ausführungspläne ähnlich sein. Es gibt jedoch Fälle, in denen sie unterschiedlich sind. Dies ist normal und tritt auf, weil die Datenbankstatistiken und die tatsächlichen Daten unterschiedlich sind. Diese Unterschiede können über mehrere Kanäle eingeführt werden:
Parallelität
Plankosten können dazu führen, dass zwei Ausführungspläne für eine übermittelte Abfrage erstellt werden. Die SQL Server-Engine entscheidet, ob der parallele Plan verwendet wird oder nicht, sodass es möglich ist, dass ein Plan den parallelen Plan und der andere den seriellen Plan verwendet.
Veraltete Statistiken
Wenn Sie Daten in Tabellen und Indizes einfügen und Daten daraus löschen oder die Tabelle oder das Indexschema ändern, ändern sich die Statistiken. Wenn die Statistiken nicht regelmäßig aktualisiert werden, weicht der tatsächliche Ausführungsplan vom geschätzten Ausführungsplan ab.
Ungültiger geschätzter Plan
Wenn eine Abfrage eine Anweisung enthält, die eine temporäre Tabelle erfordert, die nur vorhanden ist, wenn die Abfrage ausgeführt wird, führt das Generieren eines geschätzten Ausführungsplans zu einem Fehler, da keine Abfrage ausgeführt wurde. Dieselbe Abfrage würde im tatsächlichen Ausführungsplan problemlos ausgeführt werden, da die Abfrage ausgeführt wurde.
SQL-Ausführungspläne sind eine wertvolle Ressource für die Fehlerbehebung bei Leistungsproblemen von SQL Server. Zu wissen, wie sowohl geschätzte als auch tatsächliche SQL-Ausführungspläne generiert werden, ist ein wesentliches Werkzeug für jeden DBA, der mit der Optimierung von Abfragen für eine optimale Leistung beauftragt ist.