Showplan Erweiterung in SQL Server 2017

Mit der Veröffentlichung des SQL Servers 2017 wurden grundlegende Änderungen durchgeführt. Und obwohl ein Großteil der Arbeitszeit in die Entwicklung einer SQL Server Version die auf verschiedenen Linux Distributionen genutzt werden kann, gibt es zusätzlich einige neue interessante Themen und Features. Eine dieser Neuerungen ist die Erweiterung des Showplans. Diese bietet mehrere Möglichkeiten, die Performance von Abfragen zu verbessern, sowie eine Vielzahl neuer DMVs (Dynamic Management Views) die bei der Fehlererkennung unterstützen sollen.

UDFs

Die erste Erweiterung soll den Benutzer unterstützen, den Einfluss einer UDF (User Defined Function) auf das Ausführen von Queries besser zu erkennen.
UDFs sind eine nützliches Werkzeug, um wiederverwendbare Routinen zu definieren, die anschließend in Abfragen benutzt werden können. In einem Ausführungsmodell, das einen “cursor” benutzt, kann das Benutzen solcher UDFs jedoch zu einem enormen Einbruch der Performance führen und die Ausführungszeit der Abfrage wird hauptsächlich innerhalb der Funktion verbracht.

Um als Benutzer und Anwender solcher UDFs kritische Zeitabläufe oder Funktionen besser zu identifizieren, wurden zwei neue Statistiken eingeführt: UdfCpuTime und UdfElapsedTime.
Also die gesamte CPU-Zeit, sowie die verstrichene Zeit.

Mit diesen beiden Statistiken lassen sich also nun bessere Entscheidungen hinsichtlich des Gebrauchs von UDFs treffen. Sollten UDFs identifiziert werden, die zu viel Zeit benötigen, sollten Sie über einen Wechsel zu sog. “Inline expressions” oder abgeleiteten Tabellen (engl. “derived tables”) nachdenken.

Zeilen Ziel (engl. Row Goal)

In der Erweiterung des Row Goal geht es darum auch hier den Benutzer dabei zu unterstützen, besser den Einsatz von Optimizer row goal und seinen Einfluss auf Abfragen zu erkennen.
Row Goal beschreibt im Allgemeinen die Optimierung der betrachteten Zeilen beim Ausführen einer Abfrage. Zunächst wird davon ausgegangen, dass alle Zeilen der Ausgabe verarbeitet werden müssen. Der Optimierer versucht anhand von Mustern diese Anzahl an zu betrachtenden Zeilen (also den Row Goal) zu minimieren.
Wann immer dieser Row Goal benutzt wird, wird jetzt eine neue Operator-Eigenschaft mit dem Namen EstimateRowsWithoutRowGoal angezeigt.
Vor dem Einführen dieser neuen Eigenschaft konnte man nur vermuten, ob Row Goal zum Einsatz kam oder nicht.

 

Neben diesem, gibt es natürlich noch eine Vielzahl an weiteren interessanten Änderungen. Für weitere Informationen können Sie unsere Artikel über die Automatisierte Plan Korrektur und die Adaptive Abfrage Verarbeitung auf unserer Website lesen. Eine vollständige Übersicht  finden sie hier direkt auf der Microsoft Seite bzgl. des Release von SQL Server 2017.

Schreibe einen Kommentar