Intelligente Leistung

Abgeschlossen

SQL Server und Azure SQL umfassen Automatisierungsfunktionen, um eine konstante Leistung Ihrer Anwendung zu gewährleisten. Diese Automatisierungsfunktionen werden zusammengefasst als intelligente Leistung bezeichnet.

Die intelligente Leistung für Azure SQL umfasst die intelligente Abfrageverarbeitung, die automatische Plankorrektur und die automatische Optimierung.

Intelligente Abfrageverarbeitung

Die intelligente Abfrageverarbeitung (Intelligent Query Processing, IQP) ist eine Suite von neuen Funktionen, die in den Abfrageprozessor integriert sind. Sie aktivieren sie mithilfe des aktuellen Datenbank-Kompatibilitätsgrads. Die Leistungsfähigkeit von Anwendungen kann erhöht werden, indem der aktuelle Datenbank-Kompatibilitätsgrad verwendet wird. Es sind keine Codeänderungen erforderlich. Ein Beispiel für die intelligente Abfrageverarbeitung ist die verzögerte Kompilierung von Tabellenvariablen, um Abfragen, die Tabellenvariablen verwenden, schneller ausführen zu können.

Azure SQL-Datenbank und Azure SQL Managed Instance unterstützen denselben Datenbank-Kompatibilitätsgrad wie SQL Server 2019 und spätere Versionen, der für die Verwendung der intelligenten Abfrageverarbeitung (150) erforderlich ist.

Automatische Plankorrektur

Abfrageplanregressionen gehören im Zusammenhang mit SQL Server zu den schwierigsten Problemen hinsichtlich der Leistung. Eine Abfrageplanregression tritt auf, wenn die gleiche Abfrage neu kompiliert wird und ein neuer Plan zu einer schlechteren Leistung führt.

SQL Server 2017 und Azure SQL-Datenbank haben das Konzept der automatischen Plankorrektur eingeführt, bei dem die Daten im Abfragespeicher analysiert werden. Wenn Sie den Abfragespeicher mit einer Datenbank in SQL Server 2017 (oder höher) und in Azure SQL-Datenbank aktivieren, sucht die SQL Server-Engine nach Abfrageplanregressionen und bietet Empfehlungen. Diese Empfehlungen werden in der sys.dm_db_tuning_recommendations dynamischen Verwaltungsansicht (Dynamic Management View, DMV) angezeigt. Diese Empfehlungen enthalten T-SQL-Anweisungen, um einen Abfrageplan manuell zu erzwingen, wenn die Leistung zufriedenstellend war.

Wenn Sie mit diesen Empfehlungen vertraut sind, können Sie SQL Server so einrichten, dass Pläne automatisch erzwungen werden, wenn Regressionen auftreten. Aktivieren Sie die automatische Plankorrektur mithilfe von ALTER DATABASE und dem AUTOMATIC_TUNING-Argument.

Für Azure SQL-Datenbank können Sie die automatische Plankorrektur auch mithilfe der Optionen für die automatische Optimierung im Azure-Portal oder mithilfe der REST-APIs aktivieren. Empfehlungen zur automatischen Plankorrektur sind immer für jede Datenbank aktiviert, in der der Abfragespeicher aktiviert ist (Standardeinstellung für Azure SQL-Datenbank und Azure SQL Managed Instance). Die automatische Plankorrektur (FORCE_PLAN) ist für Azure SQL-Datenbank für neue Datenbanken standardmäßig aktiviert.

Automatische Optimierung für Azure SQL-Datenbank

Die automatische Plankorrektur ist ein Beispiel für die automatische Optimierung in Azure SQL und SQL Server, aber ein einzigartiger Aspekt bei der automatischen Optimierung für Azure SQL-Datenbank ist die automatische Indizierung.

Hinweis

Die automatische Indizierung ist in SQL Managed Instance derzeit nicht verfügbar.

Die Cloud bietet Microsoft die Möglichkeit, zusätzliche Dienste in Form von Empfehlungen zur Leistung und Automatisierung außerhalb der Planempfehlungen bereitzustellen. Diese Funktion wird als automatische Optimierung für Azure SQL-Datenbank bezeichnet. Diese Dienste werden als Hintergrundprogramme ausgeführt, mit denen die Leistungsdaten einer Instanz von Azure SQL-Datenbank analysiert werden. Sie sind im Preis jedes beliebigen Datenbankabonnements enthalten.

Die automatische Optimierung ist hauptsächlich für Probleme im Zusammenhang mit Indizes konzipiert. Bei der automatischen Optimierung werden Daten aus den Telemetriedaten einer Datenbank einschließlich des Abfragespeichers und der dynamischen Verwaltungssichten analysiert, um das Erstellen von Indizes zu empfehlen, die die Anwendungsleistung verbessern können. Darüber hinaus können Sie die automatische Optimierung aktivieren, um automatisch Indizes zu erstellen, die die Abfrageleistung verbessern können. Bei der automatischen Optimierung werden auch Indexänderungen überwacht, Löschvorgänge empfohlen oder Indizes automatisch gelöscht, wenn sie die Abfrageleistung nicht verbessern.

Die automatische Optimierung für Azure SQL-Datenbank ist ein konservativer Ansatz zum Empfehlen von Indizes. Dies bedeutet, dass Empfehlungen, die möglicherweise in einer dynamischen Verwaltungssicht wie „sys.dm_db_missing_index_details“ oder einem Abfrageplan angezeigt werden, unter Umständen nicht sofort als Empfehlungen für die automatische Optimierung angezeigt werden. Die Dienste für die automatische Optimierung überwachen Abfragen im Lauf der Zeit und verwenden Machine Learning-Algorithmen, um Empfehlungen auszugeben, die wirklich Auswirkungen auf die Abfrageleistung haben.

Beachten Sie, dass bei der automatischen Optimierung für Indexempfehlungen keine Leistungseinbußen berücksichtigt werden, die ein Index auf Ihre Vorgänge haben kann (z. B. Einfügungen, Updates oder Löschungen). In der Regel haben die neuen nicht gruppierten Indizes, die das Feature für automatische Indizes erstellt, erhebliche positive Auswirkungen auf die Leistung.

Parametrisierte Abfragen stellen ein zusätzliches Szenario für die automatische Optimierung dar. Abfragen mit nicht parametrisierten Werten können zu Mehrkosten bei der Leistung führen, da der Ausführungsplan jedes Mal neu kompiliert wird, wenn die nicht parametrisierten Werte unterschiedlich sind. In vielen Fällen werden für die gleichen Abfragen mit unterschiedlichen Parameterwerten die gleichen Ausführungspläne generiert. Diese Pläne werden dem Plancache jedoch separat hinzugefügt. Der Vorgang der Neukompilierung von Ausführungsplänen verbraucht Datenbankressourcen, erhöht die Abfragedauer und führt zu einem Überlauf des Plancaches. Diese Ereignisse bewirken ihrerseits, dass Pläne aus dem Cache entfernt werden.

Sie können die Optimierung für parametersensitiven Plan (Parameter Sensitive Plan, PSP) verwenden, um dieses Szenario zu beheben. Die PSP-Optimierung aktiviert automatisch mehrere aktive zwischengespeicherte Pläne für eine einzelne parametrisierte Anweisung. Zwischengespeicherte Ausführungspläne berücksichtigen unterschiedliche Datengrößen basierend auf den vom Kunden bereitgestellten Laufzeitparameterwerten.

Beispiel für Indizes mit automatischer Optimierung in Azure SQL-Datenbank

Im Folgenden finden Sie ein Beispiel aus dem Azure-Portal, bei dem Indizes basierend auf der Arbeitsauslastungsanalyse für eine Datenbank im Zeitverlauf empfohlen werden. Wir haben noch nicht genügend Aktivitäten an Ihre Sandbox-Azure SQL-Datenbank gesendet, um derartige Empfehlungen zu generieren. CREATE INDEX-Empfehlungen werden im Laufe der Zeit generiert, während Ihre Workload erfasst wird, und nicht im kleinen Zeitrahmen dieser Übung.

Screenshot of index recommendation notification.

Im Azure-Portal werden unter Leistungsübersicht Informationen zur Leistung der fünf Abfragen mit dem höchsten Ressourcenverbrauch im Abfragespeicher angezeigt. Es gibt auch eine Empfehlung.

Screenshot of Query Performance Overview.

Das Azure-Portal bietet mit Query Performance Insight ein auf dem Abfragespeicher basierendes visuelles Berichtserstellungstool. In diesem Beispiel zeigt das Query Performance Insight-Tool die jeweilige Abfrage mit dem höchsten Ressourcenverbrauch an und gibt Empfehlungen zur Verbesserung der Abfrageleistung.

Screenshot of Query Performance Insights.

Das Azure-Portal bietet auch eine direkte Möglichkeit, Leistungsempfehlungen anzuzeigen.

Screenshot of Performance Recommendations.

In dieser Ansicht werden bestimmte Empfehlungen und der Verlauf aller Aktionen zur automatischen Optimierung angezeigt. Im Fall eines Indexes werden die Details des Indexes und der Tabelle angezeigt. Die Option Automatisieren ermöglicht die automatische Optimierung.

Screenshot of automatic tuning options.

Sie können Optionen für die automatische Optimierung auf Datenbankserver- oder Datenbankebene festlegen. Wenn Sie die automatische Optimierung in diesem Szenario aktiviert haben, wird der Index automatisch erstellt.

Sie können die Optionen für die automatische Optimierung auch über die sys.database_automatic_tuning_options-DMV anzeigen.

Hinweis

Empfehlungen und Automatisierungsoptionen für index- und parameterabhängige Pläne sind für Azure SQL Managed Instance oder SQL Server nicht verfügbar. Die automatische Plankorrektur ist hingegen verfügbar.

Wenn Sie auf den empfohlenen Index klicken, erhalten Sie weitere Details zum jeweiligen Index.

Screenshot of create index recommendation.

Es werden Details zum Index, zur Tabelle und zum erforderlichen Speicherplatz angezeigt. Sie haben die Möglichkeit, den empfohlenen Index anzuwenden oder ein T-SQL-Skript anzuzeigen, das den Index anwendet.

Screenshot of the index recommendation script.

Bei dem Index handelt es sich um einen nicht gruppierten Index, der als Onlineindex angewendet wird. Wenn ein Index basierend auf einer Empfehlung entweder manuell oder durch die automatische Optimierung angewendet wurde, überwacht die Empfehlungs-Engine für einen bestimmten Zeitraum auch die Abfrageleistung mit dem angewendeten Index. Wenn die Abfrageleistung nach dem Anwenden des Indexes nachlässt, können Sie den Index löschen.

Wissensbeurteilung

1.

Was beschreibt die intelligente Abfrageverarbeitung (IQP) am besten?

2.

Für welche Leistungsszenarios kann die automatische Plankorrektur Empfehlungen ausgeben und Optimierungen durchführen?

3.

Basierend auf welchen Informationen können im Rahmen der automatischen Optimierung für Azure SQL-Datenbank Indizes empfohlen und erstellt werden?