Überwachen der Datenbankleistung

Abgeschlossen

Ein großer Teil der Problembehandlungstechniken, die Sie für die Problembehandlung bei der Datenbankleistung verwenden würden, bleibt gleich in Azure SQL.

Alle Tools, die normalerweise für die Überwachung und Problembehandlung bei SQL Servern verwendet werden, gelten auch für SQL Server, die auf Azure Virtual Machines ausgeführt werden, einschließlich Tools wie Leistungsmonitor. Aufgrund der Art von Platform-as-a-Service (PaaS) stellen Azure SQL-Datenbank und Azure SQL Managed Instance jedoch einen anderen Satz von Tools bereit. Als Nächstes untersuchen wir die spezifischen Tools für die PaaS-Angebote von Azure und deren Funktionen.

Vergleichen der Leistungsergebnisse mit Ihrer Baseline

Der Prozess der Erstellung einer Baseline beginnt in der Regel bereits lange vor der eigentlichen Datenbankmigration. Dabei werden umfassende Datenmessungen erfasst, welche die Standardleistung der Datenbank in ihrer ursprünglichen Umgebung widerspiegeln. Diese Messungen können unter anderem CPU-Auslastung, Antwortzeiten, Transaktionsraten und Fehlerraten umfassen.

Diese Baseline dient als Referenzpunkt, mit dem die Leistung der migrierten Datenbank verglichen werden kann. Die Auswertung oder der Vergleich dieser Baselinedaten mit den Leistungsmetriken der migrierten Datenbank erfolgt jedoch erst nach Abschluss der Migration.

Nach der Migration wird die Leistung der neuen Datenbankumgebung überwacht und gemessen. Diese Metriken nach der Migration werden dann mit der Baseline vor der Migration verglichen, um Abweichungen oder Leistungsprobleme zu identifizieren. Dieser Vergleich hilft zu verstehen, ob die Migration negative Auswirkungen auf die Datenbankleistung hatte oder ob es Bereiche gibt, die eine Leistungsoptimierung benötigen.

Automatische Optimierung

Die automatische Optimierung ist ein Feature, das kontinuierlich von Ihrer Workload lernt, potenzielle Probleme und Verbesserungen identifiziert und Empfehlungen basierend auf Abfragespeicherdaten bietet. Sie passt sich an Änderungen in Ausführungsplänen an, die durch Schema- oder Indexänderungen oder Datenaktualisierungen verursacht werden.

Sie können die Optimierungsempfehlungen entweder manuell über das Azure-Portal anwenden, oder es der automatischen Optimierung überlassen, diese Empfehlungen autonom für Sie anzuwenden. In Azure SQL-Datenbank kann es auch die Abfrageleistung verbessern, indem Indizes optimiert werden.

Automatische Plankorrektur

Mithilfe des Abfragespeichers kann der Datenbank-Engine Abfrageausführungspläne erkennen, die Leistungseinbußen verzeichnen. Obwohl Sie einen regredierenden Plan manuell über die Benutzeroberfläche ermitteln können, können Sie sich auch automatisch vom Abfragespeicher benachrichtigen lassen.

Screenshot of the Query Store view for regressed plan correction.

Im angegebenen Beispiel wird neben Plan-ID 1 ein Häkchen angezeigt, das angibt, dass der Plan erzwungen wird.

Nachdem Sie die automatische Optimierung aktiviert haben, erzwingt der Datenbank-Engine automatisch alle vorgeschlagenen Abfrageausführungspläne unter den folgenden Bedingungen:

  • Die Fehlerrate des vorherigen Plans übersteigt die des empfohlenen Plans
  • Die geschätzte CPU-Verbesserung beträgt mehr als 10 Sekunden
  • Der erzwungene Plan übertrifft den vorherigen Plan

Wenn die automatische Planerzwingung erfolgt, wendet der Datenbank-Engine den zuletzt am besten funktionierenden Plan an und überwacht dessen Leistung. Wenn der erzwungene Plan keine bessere Leistung als der vorherige zeigt, wird die Erzwingung aufgehoben und die Kompilierung eines neuen Plans durchgesetzt. Wenn er den vorherigen Plan übertrifft, bleibt er erzwungen, bis eine erneute Kompilierung erfolgt.

Verwenden Sie die folgende T-SQL-Abfrage, um die automatische Plankorrektur zu aktivieren.

ALTER DATABASE [WideWorldImporters] SET AUTOMATIC_TUNING (FORCE_LAST_GOOD_PLAN = ON);

Sie können Empfehlungen zur automatischen Optimierung über die dynamische Verwaltungsansicht sys.dm_db_tuning_recommendations anzeigen. Diese DMV stellt Empfehlungsdetails, Typen und Zustände bereit. Um zu bestätigen, dass die automatische Optimierung für eine Datenbank aktiviert ist, überprüfen Sie die Ansicht sys.database_automatic_tuning_options.

Die automatische Optimierung für Azure SQL Managed Instance unterstützt nur FORCE LAST GOOD PLAN.

Mehr Informationen zur Aktivierung von E-Mail-Benachrichtigungen zur automatischen Optimierung finden Sie unter E-Mail-Benachrichtigungen zur automatischen Optimierung

Automatische Indexverwaltung

Azure SQL-Datenbank unterstützt die automatische Indexoptimierung. Im Laufe der Zeit erfährt die Datenbank mehr über vorhandene Workloads und bietet Empfehlungen zum Hinzufügen oder Entfernen von Indizes, um die Leistung zu verbessern. Wie bei der Erzwingung verbesserter Abfragepläne kann die Datenbank so konfiguriert werden, dass Indizes auf Grundlage der bestehenden Indexleistung automatisch erstellt oder entfernt werden.

Screenshot of Automatic tuning Options for Azure SQL Database.

Verwenden Sie alternativ die folgende Abfrage, um die in Ihrer Datenbank aktivierten Funktionen für die automatische Optimierung anzuzeigen.

SELECT name,
    desired_state_desc,
    actual_state_desc,
    reason_desc
FROM sys.database_automatic_tuning_options

Die Indexerstellung ist ressourcenintensiv, und die erfolgreiche Erstellung ist entscheidend, um sicherzustellen, dass keine negativen Auswirkungen auf Ihre Workloads entstehen.

Azure SQL Database überwacht die Ressourcen, die zum automatischen Implementieren neuer Indizes erforderlich sind, um Leistungseinbußen zu verhindern. Die Optimierungsaktion wird zum Beispiel verzögert, bis Ressourcen verfügbar sind, wenn Ressourcen für vorhandene Workloads benötigt werden und die Indexerstellung verhindern.

Erkunden von Query Performance Insight

Die Anfangsphase einer Datenbankleistungsoptimierungsaufgabe umfasst das Ermitteln der Abfragen, die am ressourcenintensivsten sind. In früheren SQL Server Versionen erforderte dies eine umfangreiche Ablaufverfolgung und eine Reihe komplizierter SQL-Skripts, was den Datensammlungsprozess mühsam gemacht hat.

Erkennen von problematischen Abfragen

Azure SQL-Datenbank bietet ein Tool mit dem Namen Query Performance Insight, das es dem Administrator ermöglicht, arbeitsintensive Abfragen schnell zu identifizieren. Sie finden es auf dem Standardblatt Ihrer Azure SQL-Datenbank im Abschnitt Intelligente Leistung.

Query Performance Insight in Azure SQL Database bietet drei Filteroptionen, nämlich für Abfragen mit langer Ausführungsdauer, Abfragen mit dem höchsten Ressourcenverbrauch (Standard) oder einen benutzerdefinierten Filter. Es werden die fünf wichtigsten Abfragen sortiert nach einer ausgewählten Ressource, z. B. CPU, Daten-E/A oder Protokoll-E/A angezeigt. Sie können einen Drilldown in einzelne Abfragen durchführen, indem Sie auf die Zeile im unteren Raster klicken. Jede Zeile ist mit einer eindeutigen Farbe gekennzeichnet, die der Farbe im Balkendiagramm entspricht.

Screenshot of Query Performance Insights dashboard from Azure portal.

Die benutzerdefinierte Registerkarte bietet mehr Flexibilität als die anderen Optionen. Es ermöglicht eine maßgeschneiderte Untersuchung von Leistungsdaten mit mehreren Dropdownmenüs, welche die Datenvisualisierung beeinflussen. Zu den wichtigsten Metriken gehören CPU, Protokoll-E/A, Daten-E/A und Arbeitsspeicher. Dabei handelt es sich um Leistungsaspekte, die durch die Dienstebene und Computeressourcen Ihrer Azure SQL Datenbank begrenzt sind.

Screenshot of a custom dashboard in Query Performance Insight.

Wenn wir einen Drilldown in eine einzelne Abfrage durchführen, können wir die Abfrage-ID und die Abfrage selbst sowie den Aggregationstyp der Abfrage und den zugehörigen Zeitraum anzeigen.

Screenshot of the details of Query ID 3204 in Query Performance Insight.

Auch wenn Query Performance Insight den Ausführungsplan der Abfrage nicht anzeigt, können Sie diese trotzdem schnell identifizieren und die Informationen nutzen, um den Plan aus dem Abfragedatenspeicher zu extrahieren und in Ihre Datenbank einzufügen.

Alerts

Sie können mit dem Azure-Portal Leistungsbenachrichtigungen für Datenbanken in Azure SQL-Datenbank einrichten. Diese Benachrichtigungen können Sie per E-Mail erhalten oder Sie können einen Webhook aufrufen, wenn eine bestimmte Metrik (z. B. Datenbankgröße oder CPU-Auslastung) einen Schwellenwert erreicht.

Der Prozess zum Einrichten von Benachrichtigungen ist ähnlich wie zwischen SQL-Datenbank und SQL Managed Instance. Navigieren Sie zum Einrichten von Leistungswarnungen für Azure SQL Datenbank zum Abschnitt Überwachung und wählen Sie Benachrichtigungen aus. Von dort aus müssen Sie eine neue Benachrichtigungsregel einrichten, eine Bedingung definieren und eine Aktionsgruppe erstellen.

Weitere Informationen zu Benachrichtigungen für Azure SQL Managed Instance finden Sie unter Erstellen von Benachrichtigungen für Azure SQL Managed Instance mithilfe des Azure-Portal. Bei Interesse an Azure SQL-Datenbank finden Sie weitere Informationen unter Erstellen von Benachrichtigungen für Azure SQL-Datenbank und Azure Synapse Analytics über das Azure-Portal.

Azure SQL Insights

Azure SQL Insights verbessert Ihre Überwachungserfahrung, indem interaktive und einsatzbereite Visualisierungen bereitgestellt werden. Sie die Telemetriesammlung und Häufigkeit anpassen und Daten aus mehreren Quellen in einer einzelnen Überwachungsumgebung kombinieren. Zudem werden die Metriken im Laufe der Zeit gespeichert, wodurch Sie Leistungsprobleme untersuchen können, die möglicherweise in der Vergangenheit schon aufgetreten sind.

Wichtig

Es wird empfohlen, Azure SQL Insights erst einzurichten, nachdem die migrierte Datenbank vollständig in die Produktion integriert wurde. Dadurch wird verhindert, dass das Tool während der Migrations- und Testphase verrauschte Daten erfasst.

Um mit SQL Insights zu beginnen, benötigen Sie einen dedizierten virtuellen Computer, der Daten von Ihren SQL-Servern überwacht und remote erfasst. Dieser dedizierte virtuelle Computer muss die folgenden Komponenten installiert haben:

  • Azure Monitor-Agent
  • Erweiterung für Workloaderkenntnisse

Darüber hinaus sind die folgenden Komponenten erforderlich, um SQL Insights einzurichten.

Überwachungsprofil: Gruppenserver, Instanzen oder Datenbanken, die überwacht werden sollen

Log Analytics-Arbeitsbereich: Hierhin sollen die SQL-Überwachungsdaten gesendet werden.

Sammlungseinstellungen: Sie können die Datensammlung für Ihr Profil anpassen. Die Standardeinstellungen umfassen die meisten Überwachungsszenarien und müssen in der Regel nicht geändert werden.

Erweiterte Ereignisse

Das Tool für erweiterte Ereignisse ist ein robustes Überwachungssystem, das detaillierte Server- und Datenbankaktivitäten erfasst. Filter können angewendet werden, um den Mehraufwand für die Datensammlung zu reduzieren und sich auf bestimmte Leistungsprobleme zu konzentrieren. Alle Azure SQL Angebote unterstützen erweiterte Ereignisse.

Während die Einrichtung von erweiterten Ereignissen auf SQL Server, Azure SQL Database und Azure SQL Managed Instance ähnlich ist, konzentriert sich dieses Modul auf deren Unterschiede, nicht auf die Vermittlung des Einrichtungsprozesses.

Im Folgenden finden Sie einige wichtige Unterschiede beim Konfigurieren erweiterter Ereignisse für Azure SQL-Datenbank:

  • Transact-SQL: Wenn Sie den CREATE EVENT SESSION-Befehl auf SQL Server ausführen, verwenden Sie die ON SERVER-Klausel. Für Azure SQL-Datenbank verwenden Sie jedoch stattdessen die ON DATABASE-Klausel. Die ON DATABASE-Klausel gilt auch für die Transact-SQL-Befehle ALTER EVENT SESSION und DROP EVENT SESSION. Azure SQL-Datenbank unterstützt nur Sitzungen auf Datenbankebene.

  • Datenbankbezogene Sitzungen: Erweiterte Ereignisse basieren auf dem Einzelmandantenisolationsmodell in Azure SQL Datenbank. Eine Ereignissitzung in einer Datenbank kann nicht auf Daten oder Ereignisse in einer anderen Datenbank zugreifen. Sie können keine CREATE EVENT SESSION-Anweisung im Kontext der Masterdatenbank¹ angeben.

  • Speicher: Da Sie keinen Zugriff auf das Dateisystem des Servers haben, auf dem sich Ihre Datenbank in Azure SQL-Datenbank befindet, können Sie ein Speicherkontoziel zum Speichern Ihrer erweiterten Ereignissitzungen konfigurieren.