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 Showplan. 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 dass 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.
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, gilt es über einen Wechsel zu sog. “Inline expressions” oder abgeleiteten Tabellen (engl. derived tables) nachzudenken.

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 Idee der Optimierung bezüglich der betrachteten Zeilen beim Ausführen einer Abfrage. Anfänglich 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 sind Artikel über Automatisierte Plan Korrektur und Adaptive Abfrage Verarbeitung auf unserer Website zu finden. Eine vollständige Übersicht aller dieser finden sie direkt auf der Microsoft Seite bzgl. des Release von SQL Server 2017 hier.

Schreibe einen Kommentar