Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Lesen und Analysieren von SQL Server-Ausführungsplänen

SQL Server-Ausführungspläne sind ein Gateway für Abfrageoptimierer und Abfrageausführungen für Datenbankexperten. Sie zeigen die Abfrageverarbeitung und die beteiligten Phasen wie betroffene Tabellen, Indizes, Statistiken, Join-Typen, die Anzahl der betroffenen Zeilen, Abfrageverarbeitung, Datensortierung und Datenabruf.

In einem früheren Artikel, SQL Server-Ausführungsplan – Was ist das und wie hilft er bei Leistungsproblemen? Wir haben den Workflow zur Ausführung von Abfragen auf hoher Ebene, die verschiedenen Arten von Ausführungsplänen (grafisch, XML und Text) sowie tatsächliche und geschätzte Ausführungspläne untersucht.

Jetzt untersuchen wir Dinge, die Sie wissen müssen, wenn Sie SQL Server-Ausführungspläne auswerten und wie Sie die Informationen am besten interpretieren.

Lesen eines grafischen SQL Server-Ausführungsplans

Im Allgemeinen lesen wir Ausführungspläne von rechts nach links. Sie beginnen mit dem Ausführungsplan-Operator ganz oben rechts und bewegen sich nach links. Es hilft Ihnen, den logischen Datenfluss in der Abfrage zu verfolgen.

Angenommen, Sie führen die folgende Abfrage in einer [AdventureWorks2019]-Beispieldatenbank aus und zeigen den tatsächlichen Ausführungsplan an.

SELECT TOP (10) [SalesOrderID] [SalesOrderDetailID] [CarrierTrackingNumber] [OrderQty] [ProductID] [SpecialOfferID] [ModifiedDate] FROM [AdventureWorks2019].[Sales].[SalesOrderDetail] where [UnitPrice]>1000

Die Abfrage ruft Daten aus der Tabelle [Sales].[SalesOrderDetail] für Bestellungen mit einem Stückpreis über 1.000 ab.

Wenn wir den Ausführungsplan von rechts nach links lesen, bemerken wir Folgendes:

  • Der erste Operator ist der Clustered Index Scan, der Daten aus der Tabelle [Sales].[SalesOrderDetail] liest. Wenn Sie Ihren Mauszeiger auf den Pfeil bewegen, der den Clustered-Index-Scan und den Top-Operator verbindet, werden die geschätzte und tatsächliche Anzahl der Zeilen sowie die geschätzte Datengröße zurückgegeben.

  • Er übergibt Daten vom Clustered Index Scan-Operator an den Top-Operator und übergibt die 10 Zeilen an den SELECT-Operator.

Intern führt SQL Server den Plan von links nach rechts aus. Wenn Sie an den physischen Aufträgen des Operators interessiert sind, sollten Sie einen Ausführungsplan von links nach rechts lesen. Jeder Bediener fordert Daten vom nächsten Bediener an. Im obigen Szenario fordert der Top-Operator beispielsweise Daten vom Clustered Index Scan an. Der Clustered-Index-Scan gibt die Zeilen aus der Tabelle [Sales].[SalesOrderDetail] zurück, die das Where erfüllen Klauselbedingung.

Für den Fall, dass mehrere Zweige in einem Ausführungsplan zusammengeführt werden, sollten Sie dem Ansatz von rechts nach links und von oben nach unten folgen.

Betreiberkosten

Jeder Operator in einem SQL Server-Ausführungsplan ist mit Kosten verbunden. Die Betreiberkosten stehen im Verhältnis zu anderen Kosten im Ausführungsplan. Normalerweise müssen wir uns auf den kostspieligen Operator konzentrieren und die Abfrage darauf abstimmen.

Im Falle eines komplizierten Ausführungsplans kann es schwierig sein, den kostspieligen Betreiber zu identifizieren. In diesem Fall können Sie SET SHOWPLAN_ALL ON verwenden und es werden Informationen in tabellarischer Form bereitgestellt.

Sie können auch den [Stmt-Text] verwenden, um den Ausführungsplan auf jeder Operator- und Anweisungsebene aufzuschlüsseln.

SQL Server Management Studio (SSMS) bietet auch die Flexibilität, einen Operator basierend auf Suchkriterien zu finden. Klicken Sie dazu mit der rechten Maustaste auf den Ausführungsplan und wählen Sie Knoten suchen. aus Dies öffnet ein Fenster mit verschiedenen Suchbedingungen. Geben Sie Ihre Anforderung an, und sie wird auf den jeweiligen Knoten verweisen, wie unten gezeigt.

Alternativ können Sie Azure Data Studio verwenden und zu Aktuelle Abfrage mit aktuellem Plan ausführen navigieren unter der Befehlspalette. Dies ergibt einen tatsächlichen Ausführungsplan in kompakter Form zusammen mit den Top-Operationen, um kostspielige Operatoren schnell zu identifizieren.

Showplan-Analyse

Sie können eine ungenaue Kardinalitätsschätzung identifizieren, um problematische Ausführungspläne zu untersuchen. Dadurch erhalten Sie kurze Informationen zum Auffinden eines bestimmten Operators und Empfehlungen auf der Registerkarte ShowPlan-Analyse. Sie können das Ergebnis in den Spalten „Differenz“, „Ist“ und „Schätzung“ sortieren, um das Problem und Empfehlungen für den jeweiligen Bediener im Ausführungsplan zu finden. Dies ist ab SSMS 17.4 verfügbar.

Klicken Sie dazu einfach mit der rechten Maustaste auf den Ausführungsplan und dann auf Aktuellen Ausführungsplan analysieren.

Klicken Sie dann auf den Hyperlink unter Details finden . Dies wird die möglichen Szenarien für Schätzungsungenauigkeiten und Problemumgehungen zur Verbesserung dieser Schätzungen erläutern. Dies ist ein guter Ausgangspunkt für Probleme mit der Kardinalitätsschätzung.

Showplan vergleichen

Angenommen, Sie haben ein Problem im Ausführungsplan festgestellt und eine Lösung implementiert, um es zu beheben. Aber wie vergleichen Sie den vorherigen Ausführungsplan (wie er vor der Implementierung der Lösung war) und den aktuellen Ausführungsplan? Der SSMS-Vergleichsplan Funktion gibt Ihnen die Flexibilität, zwei Ausführungspläne zu vergleichen. Es hebt die Ähnlichkeiten und Unterschiede zwischen diesen Plänen hervor.

Normalerweise erhalten DBAs einen Anruf von Entwicklern, dass eine bestimmte Abfrage in der Produktion gut funktioniert, aber in einer QA-Umgebung mit den gleichen Parametern lange dauert. Ein weiterer Anwendungsfall ist die Migration auf eine neuere Version von SQL Server. Angenommen, Sie haben nach der Migration Probleme mit einer Abfrage, die in einer niedrigeren SQL-Version einwandfrei funktioniert. Sie können dieses Tool auch verwenden, um Ausführungspläne verschiedener SQL-Versionen und Patch-Levels zu vergleichen.

Speichern Sie den Ausführungsplan in einem SQLPlan Verlängerung. Danach können Sie mit der rechten Maustaste auf einen anderen Ausführungsplan klicken und Showplan vergleichen auswählen .

Live-Ausführungspläne in SSMS

Sie können einen Live-Ausführungsplan einer aktiven Abfrage aktivieren. Dadurch erhalten Sie Echtzeitstatistiken über den Datenfluss zu verschiedenen Betreibern. In den Ausführungsstatistiken zur Laufzeit können Sie die verstrichene Zeit und die Anzahl der Zeilen verfolgen. Es ist eine hervorragende Funktion zur Fehlerbehebung und zum Debuggen von Leistungsproblemen. Sie können Live-Abfragestatistiken von SQL Server 2016 und höher verwenden.

Hinweis:Sie sollten die neueste Version von SSMS verwenden. Lesen Sie die Microsoft-Dokumentation, um die neueste Version von SSMS herunterzuladen.

  • Aktuell neueste Version:SSMS 18.7.1

Aktivieren Sie für Live-Suchstatistiken Live-Suchstatistiken einschließen über die SSMS-Symbolleiste.

Sie können den Live-Ausführungsplan auch im Aktivitätsmonitor anzeigen . Wählen Sie in der Aktivitätsanzeige den gewünschten Prozess aus, klicken Sie mit der rechten Maustaste darauf, um das Menü anzuzeigen, und wählen Sie Live-Ausführungsplan anzeigen.
aus

Auf diese Weise erhalten Sie Live-Abfrageschätzungen zusammen mit dem Datenfluss und den Fertigstellungsprozentsätzen einzelner Operatoren. Normalerweise warten wir, bis die Abfrageausführung abgeschlossen ist, und zeigen den tatsächlichen Ausführungsplan an. Angenommen, Ihre Abfrage benötigt mehr als 30 Minuten, um Ergebnisse zu liefern. In diesem Fall können Sie Live-Abfragestatistiken verwenden, um einzelne Operatoren und den Datenfluss zu verfolgen und darauf hinzuweisen, welcher Operator Zeit braucht, um die Abfrage abzuschließen. Wie unten gezeigt, wird die Abfrage beispielsweise 12 Minuten und 48 Sekunden lang ausgeführt und die Abfrage ist zu schätzungsweise 20 % abgeschlossen. Auf der Bedienerebene sind der Index-Scan und der Zeilenzähl-Spool zu 41 % abgeschlossen. Die gepunkteten Linien zeigen die Datenbewegung.

Nutzung des SQL Server-Ausführungsplans überprüfen

SQL Server-Ausführungspläne sind unglaublich nützlich bei der Fehlerbehebung und Optimierung langsamer Abfragen. Jeder Datenbankexperte muss wissen, wie er die Informationen analysiert und versteht, sobald der Ausführungsplan verfügbar ist. Wie bereits erwähnt, gibt es in SSMS und Azure Data Studio verschiedene Tools, mit denen Sie Leistungsprobleme überprüfen und beheben können – insbesondere die Funktion „Plan vergleichen“ sollten Sie nutzen, wenn Sie beginnen, Änderungen vorzunehmen und die Leistung zu bewerten.