Automatisierte Plan Korrektur 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.
In diesem Artikel möchten wir die automatische Plan Korrektur betrachten. Sie ist eine Funktion zur Optimierung der Auswahl der Ausführungspläne. Bei Auftreten eines Problems wird dieses automatisch erkannt und durch das Erzwingen der Ausführung des letzten bekannten guten Plans behoben.
Der SQL Server kann verschiedene Ausführungspläne zum Umsetzten der T-SQL-Abfragen verwenden. Dabei gibt es Unterschiede zwischen den Plänen basierend auf Statistiken, Indizes, etc. Oft wird ein solcher Plan geändert, mit dem Ziel die Leistung zu verbessern. In einigen Fällen ist der neue Plan möglicherweise nicht besser als der vorherige, in manchen Fällen sogar schlechter.
Eine solche Regression der Leistung zu identifizieren ist nicht immer trivial. Mit dem Feature der automatisierten Plan Korrektur
soll eine solche Regression in der Auswahl des Plans vollautomatisch erkannt und entsprechend behandelt werden.
Um die Regression zu beheben, erzwingt das Feature die Ausführung des zuletzt bekannten guten Plans. Dieser neue Plan wird ab der Ausführung zusätzlich überwacht, um eine Steigerung gegenüber des ersetzten Plans zu garantieren. Ist diese Steigerung nicht gegeben, kann die Datenbank-Engine einen neuen Plan kompilieren.
Um die automatisierte Korrektur der Planauswahl in SQL Server für eine Datenbank zu aktivieren, kann folgendes Kommando benutzt werden:
ALTER DATABASE database
SET AUTOMATIC_TUNING(FORCE_LAST_GOOD_PLAN = ON);
Manuelle Plan Korrektur
Als Alternative zur automatischen Plan Korrektur gibt es die Möglichkeit diese manuell vorzunehmen. Mit der folgenden von Microsoft zur Verfügung gestellten Abfrage lässt sich ein Regressionsproblem lösen. Zusätzlich werden Informationen über den geschätzten Gewinn dargestellt:
SELECT reason, score,
script = JSON_VALUE(details, '$.implementationDetails.script'),
planForceDetails.*,
estimated_gain = (regressedPlanExecutionCount + recommendedPlanExecutionCount)
* (regressedPlanCpuTimeAverage - recommendedPlanCpuTimeAverage)/1000000,
error_prone = IIF(regressedPlanErrorCount > recommendedPlanErrorCount, 'YES','NO')
FROM sys.dm_db_tuning_recommendations
CROSS APPLY OPENJSON (Details, '$.planForceDetails')
WITH ( [query_id] int '$.queryId',
regressedPlanId int '$.regressedPlanId',
recommendedPlanId int '$.recommendedPlanId',
regressedPlanErrorCount int,
recommendedPlanErrorCount int,
regressedPlanExecutionCount int,
regressedPlanCpuTimeAverage float,
recommendedPlanExecutionCount int,
recommendedPlanCpuTimeAverage float
) AS planForceDetails;
Neben diesem, gibt es natürlich noch eine Vielzahl an weiteren interessanten Änderungen. Für weitere Informationen sind Artikel über Adaptive Abfrage Verarbeitung
und Showplan Erweiterung
auf unserer Website zu finden. Eine vollständige Übersicht aller dieser finden Sie hier direkt auf der Microsoft Seite bzgl. des Release des SQL Server 2017.
Unsere Expert:innen stehen Ihnen bei allen Fragen rund um Ihre IT Infrastruktur zur Seite.
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!
55118 Mainz
info@madafa.de
+49 6131 3331612
Freitags: