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.
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.
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.
Kontaktieren Sie uns gerne über das
Kontaktformular und vereinbaren ein unverbindliches
Beratungsgespräch mit unseren Berater:innen zur
Bedarfsevaluierung. Gemeinsam optimieren wir Ihre
Umgebung und steigern Ihre Performance!
Wir freuen uns auf Ihre Kontaktaufnahme!