Überwachen der Datenbankleistung
Ein großer Teil der Problembehandlungstechniken, die Sie für die Problembehandlung bei der Datenbankleistung verwenden würden, bleibt in Azure SQL gleich.
Alle Tools, die in der Regel für die Überwachung und Problembehandlung von SQL Server verwendet werden, gelten auch für SQL Server, der auf einem virtuellen Azure-Computer ausgeführt wird, einschließlich Tools wie Performance Monitor. Aufgrund der Art von Platform as a Service (PaaS) bieten Azure SQL-Datenbank und azure SQL Managed Instance jedoch einen anderen Satz von Tools. Als Nächstes untersuchen wir die spezifischen Tools für die PaaS-Angebote von Azure und deren Funktionen.
Vergleichen von Leistungsergebnissen mit der Basislinie
Der Vorgang zum Einrichten eines Basisplans beginnt in der Regel gut vor der tatsächlichen Datenbankmigration. Dazu gehört das Sammeln eines umfassenden Satzes von Datenmessungen, die die Standardleistung der Datenbank in ihrer ursprünglichen Umgebung widerspiegeln. Diese Messungen können enthalten, sind jedoch nicht beschränkt auf die CPU-Auslastung, Antwortzeiten, Transaktionsraten und Fehlerraten.
Dieser Basisplan dient als Referenzpunkt, mit dem die Leistung der migrierten Datenbank verglichen werden kann. Die Auswertung oder der Vergleich dieser Basisplandaten 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 dem Basisplan vor der Migration verglichen, um Abweichungen oder Leistungsprobleme zu identifizieren. Dieser Vergleich hilft ihnen zu verstehen, ob die Migration nachteilige Auswirkungen auf die Datenbankleistung hat oder ob Bereiche vorhanden sind, die eine Optimierung für eine verbesserte Leistung erfordern.
Automatische Optimierung
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 an 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 der Azure SQL-Datenbank kann sie auch die Abfrageleistung verbessern, indem sie Indizes optimieren.
Automatische Plankorrektur
Mithilfe des Abfragespeichers kann das Datenbankmodul erkennen, wann Abfrageausführungspläne in der Leistung zurückgetreten sind. Obwohl Sie einen regredierenden Plan manuell über die Benutzeroberfläche ermitteln können, können Sie sich auch automatisch vom Abfragespeicher benachrichtigen lassen.
Im angegebenen Beispiel wird neben Plan-ID 1ein Häkchen angezeigt, das angibt, dass der Plan erzwungen wird.
Nachdem Sie die automatische Optimierungaktiviert haben, erzwingt das Datenbankmodul automatisch alle vorgeschlagenen Abfrageausführungspläne unter den folgenden Bedingungen:
- Die Fehlerrate des vorherigen Plans überschreitet die des empfohlenen Plans.
- Der geschätzte CPU-Gewinn überschreitet 10 Sekunden.
- Der erzwungene Plan übertrifft die vorherige
Wenn die automatische Planerzwingung erfolgt, wendet das Datenbankmodul den letzten guten Plan an und überwacht seine Leistung. Wenn der erzwungene Plan nicht besser als der vorherige Plan ausgeführt wird, wird er nicht erzwungen, und ein neuer Plan wird kompiliert. Wenn er den vorherigen Plan übertrifft, bleibt er gezwungen, 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. Dieser DMV enthält Empfehlungsdetails, Typen und Zustände. Informationen zum Überprüfen, ob die automatische Optimierung für eine Datenbank aktiviert ist, finden Sie in der Ansicht sys.database_automatic_tuning_options
.
Die automatische Optimierung für die von Azure SQL verwaltete Instanz unterstützt nur FORCE LAST GOOD PLAN
.
Informationen zum Aktivieren von Benachrichtigungen für die automatische Optimierung finden Sie unter E-Mail-Benachrichtigungen für die automatische Optimierung
Automatische Indexverwaltung
Azure SQL-Datenbank unterstützt die automatische Indexoptimierung. Dies bedeutet, dass die Datenbank im Laufe der Zeit über die Möglichkeit verfügt, mehr über vorhandene Workloads zu erfahren und Empfehlungen zum Hinzufügen oder Entfernen von Indizes bereitzustellen, um eine bessere Leistung zu erzielen. Wie das Erzwingen verbesserter Abfragepläne kann die Datenbank so konfiguriert werden, dass die automatische Indexerstellung oder -entfernung je nach vorhandener Indexleistung möglich ist.
Verwenden Sie alternativ die folgende Abfrage, um die in Ihrer Datenbank aktivierten Automatischen Optimierungsfeatures 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 wichtig, um keine negativen Auswirkungen auf Ihre Workloads sicherzustellen.
Die Azure SQL-Datenbank überwacht die Ressourcen, die zum automatischen Implementieren neuer Indizes erforderlich sind, um Leistungsbeeinträchtigungen zu verhindern. Die Optimierungsaktion wird verzögert, bis Ressourcen verfügbar sind, z. B. wenn Ressourcen, die für vorhandene Workloads erforderlich sind, die Indexerstellung verhindern.
Erkunden von Query Performance Insight
In der Anfangsphase einer Datenbankleistungsoptimierungsaufgabe werden die Abfragen anheften, die am meisten ressourcenintensiv sind. In früheren SQL Server-Versionen erforderte diese umfangreiche Ablaufverfolgung und eine Reihe komplizierter SQL-Skripts, wodurch der Datensammlungsprozess mühsam wird.
Erkennen von problematischen Abfragen
Azure SQL Database bietet ein Tool namens Query Performance Insight, mit dem der Administrator teure Abfragen schnell identifizieren kann. Sie finden sie im Hauptblatt Ihrer Azure SQL-Datenbank unter dem Abschnitt Intelligent Performance.
Abfrageleistungserblick in Azure SQL-Datenbank bietet drei Filteroptionen: für lange ausgeführte Abfragen, die wichtigsten ressourcenaufwendigen Abfragen (die Standardeinstellung ist) oder einen benutzerdefinierten Filter. Es zeigt die fünf wichtigsten Abfragen an, die nach einer ausgewählten Ressource sortiert sind, z. B. CPU, Daten-E/A oder Protokoll-E/A. Sie können einen Drilldown zu einzelnen Abfragen ausführen, indem Sie die Zeile im unteren Raster auswählen. Jede Zeile ist mit einer eindeutigen Farbe gekennzeichnet, die der Farbe im Balkendiagramm entspricht.
Die benutzerdefinierte Registerkarte bietet mehr Flexibilität als die anderen Optionen. Es ermöglicht eine maßgeschneidertere Untersuchung von Leistungsdaten mit mehreren Dropdownmenüs, die die Datenvisualisierung beeinflussen. Zu den wichtigsten Metriken gehören CPU-, Protokoll-E/A-, Daten-E/A-und Arbeitsspeicher, die leistungsaspekte sind, die von der Dienstebene Ihrer Azure SQL-Datenbank und computeressourcen begrenzt sind.
Wenn ein Drilldown in eine einzelne Abfrage erfolgt, können wir die Abfrage-ID und die Abfrage selbst sowie den Abfrageaggregationstyp und den zugeordneten Zeitraum anzeigen.
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.
Alarmsignale
Sie können Leistungswarnungen für Datenbanken in der Azure SQL-Datenbank mithilfe des Azure-Portals einrichten. Diese Warnungen können Sie per E-Mail benachrichtigen oder einen Webhook aufrufen, wenn eine bestimmte Metrik (z. B. Datenbankgröße oder CPU-Auslastung) einen Schwellenwert erreicht.
Der Vorgang zum Einrichten von Warnungen ist ähnlich zwischen SQL-Datenbank und SQL Managed Instance. Um Leistungswarnungen für Azure SQL-Datenbank einzurichten, navigieren Sie zum Abschnitt Überwachung, und wählen Sie Warnungenaus. Von dort aus müssen Sie eine neue Warnungsregel einrichten, eine Bedingung definieren und eine Aktionsgruppe erstellen.
Weitere Informationen zu Warnungen für azure SQL Managed Instance finden Sie unter Erstellen von Warnungen für azure SQL Managed Instance mithilfe des Azure-Portals. Wenn Sie an der Azure SQL-Datenbank interessiert sind, lesen Sie Erstellen von Warnungen für Azure SQL-Datenbank und Azure Synapse Analytics mithilfe des Azure-Portals.
Azure SQL Insights
Azure SQL Insights verbessert Ihre Überwachungserfahrung, indem interaktive und einsatzbereite Visualisierungen bereitgestellt werden. Sie können die Telemetriesammlung und -häufigkeit anpassen und Daten aus mehreren Quellen in einer einzigen Ü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
Wir empfehlen, 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 Migration und Testphase laute Daten erfasst.
Um mit SQL Insights zu beginnen, benötigen Sie einen dedizierten virtuellen Computer, der Daten von Ihren SQL-Servern überwacht und remote sammelt. 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 decken die meisten Überwachungsszenarien ab und müssen in der Regel nicht geändert werden.
Erweiterte Ereignisse
Tool für erweiterte Ereignisse ist ein robustes Überwachungssystem, das detaillierte Server- und Datenbankaktivitäten erfasst. Filter können angewendet werden, um den Datensammlungsaufwand zu reduzieren und sich auf bestimmte Leistungsprobleme zu konzentrieren. Alle Azure SQL-Angebote unterstützen erweiterte Ereignisse.
Während das Setup von erweiterten Ereignissen in SQL Server, Azure SQL-Datenbank und azure SQL Managed Instance ähnlich ist, konzentriert sich dieses Modul auf ihre Unterschiede, nicht auf das Unterrichten des Setupprozesses.
Im Folgenden finden Sie einige wichtige Unterschiede beim Konfigurieren erweiterter Ereignisse in der Azure SQL-Datenbank:
Transact-SQL-: Beim Ausführen des Befehls
CREATE EVENT SESSION
auf SQL Server verwenden Sie dieON SERVER
-Klausel. In der Azure SQL-Datenbank verwenden Sie stattdessen dieON DATABASE
-Klausel. DieON DATABASE
-Klausel gilt auch für die BefehleALTER EVENT SESSION
undDROP EVENT SESSION
Transact-SQL. Azure SQL-Datenbank unterstützt nur Sitzungen auf Datenbankebene.Sitzungen mit Datenbankbereich: Erweiterte Ereignisse basieren auf dem Isolationsmodell mit einem Mandanten in Azure SQL-Datenbank. Eine Ereignissitzung in einer Datenbank kann nicht auf Daten oder Ereignisse aus einer anderen Datenbank zugreifen. Sie können keine
CREATE EVENT SESSION
-Anweisung im Kontext der Masterdatenbank ausgeben¹.Speicher-: Da Sie keinen Zugriff auf das Dateisystem des Servers haben, auf dem sich Ihre Datenbank in der Azure SQL-Datenbank befindet, können Sie ein Speicherkontoziel konfigurieren, um Ihre erweiterten Ereignissitzungen zu speichern.