Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:Azure SQL-Datenbank
Azure SQL Managed Instance
Der Datenbankwatcher erfasst Überwachungsdaten aus SQL-Systemansichten und nimmt sie in Form von Datasets in den Datenspeicher auf. Jedes Dataset wird anhand der Daten aus einer oder mehreren SQL-Systemansichten gebildet. Für jedes Dataset gibt es eine separate Tabelle im Datenspeicher.
Datensammlung
Der Datenbankwatcher erfasst Überwachungsdaten in regelmäßigen Intervallen mithilfe von T-SQL-Abfragen. Die in jeder Ausführung einer Abfrage erfassten Daten werden als Probe bezeichnet. Die Häufigkeit der Probenerfassung je nach Dataset unterschiedlich. So können zum Beispiel Daten, die sich häufig ändern, wie SQL-Leistungsindikatoren, alle 10 Sekunden erfasst werden, während überwiegend statische Daten, wie die Datenbankkonfiguration, vielleicht nur alle fünf Minuten erfasst werden. Weitere Informationen finden Sie unter Datasets.
Database Watcher nutzt die Streamingerfassung im Azure Data Explorer und die Echtzeitanalyse in Microsoft Fabric für eine Überwachung in Quasi-Echtzeit. In der Regel stehen erfasste SQL-Überwachungsdaten für Berichte und Analysen innerhalb von weniger als 10 Sekunden zur Verfügung. Über den Link Erfassungsstatistik können Sie die Datenerfassungslatenz auf den Dashboards des Datenbankwatchers überwachen.
Interaktion zwischen Datenbankwatcher und Anwendungsworkloads
Das Aktivieren des Datenbank-Watchers wird wahrscheinlich keine erkennbaren Auswirkungen auf die Leistung des Anwendungs-Workloads haben. Häufigere Überwachungsabfragen werden in der Regel innerhalb von weniger als einer Sekunde ausgeführt, während Abfragen, die möglicherweise mehr Zeit erfordern, z. B. zum Zurückgeben großer Datasets, in selteneren Intervallen ausgeführt werden.
Um die Gefahr von Auswirkungen auf Anwendungsworkloads weiter zu verringern, werden alle Abfragen des Datenbankwatchers in Azure SQL-Datenbank ressourcengesteuert als interne Workload behandelt. Wenn ein Ressourcenkonflikt vorliegt, ist der Ressourcenverbrauch durch die Überwachungsabfragen auf einen kleinen Teil der gesamten für die Datenbank verfügbaren Ressourcen begrenzt. Dadurch werden Anwendungsworkloads gegenüber Überwachungsabfragen priorisiert.
Um Nebenläufigkeitskonflikte, wie Blockierungen und Deadlocks zwischen den in den Azure SQL-Ressourcen ausgeführten Datensammlungs- und Datenbank-Workloads zu vermeiden, verwenden die Überwachungsabfragen kurze Sperrtimeouts und eine niedrige Deadlock-Priorität. Im Fall eines Nebenläufigkeitskonflikts haben Anwendungsworkload-Abfragen Vorrang.
In den folgenden Szenarien können Lücken in den gesammelten Daten beobachtet werden:
- Bei hoher Gesamtauslastung der Ressourcen oder bei Konkurrenzkonflikten zwischen Überwachungsabfragen und Anwendungsworkloads. In diesen Fällen werden Überwachungsabfragen zugunsten von Anwendungsworkloads entprioritisiert.
- Wenn Sie über Automatisierung verfügen, die lang laufende Sitzungen beendet. Um Lücken in gesammelten Daten zu vermeiden, schließen Sie jede Sitzung aus, in der sich die
program_nameSpalte in der sys.dm_exec_sessions Systemansicht befindetSQLExternalMonitoringoderx_ms_reserved_sql_external_monitoring.
Datensammlung in Pools für elastische Datenbanken
Zum Überwachen eines Pool für elastische Datenbanken müssen Sie eine Datenbank im Pool als Ankerdatenbank festlegen. Ein Watcher verbindet sich mit der Ankerdatenbank. Da der Watcher die -Berechtigung VIEW SERVER PERFORMANCE STATE, stellen Systemansichten in der Ankerdatenbank Überwachungsdaten für den Pool als Ganzes bereit.
Tipp
Sie können zu jedem Pool für elastische Datenbanken, den Sie überwachen möchten, eine leere Datenbank hinzufügen und als Ankerdatenbank festlegen. Auf diese Weise können Sie andere Datenbanken in den Pool, aus dem Pool oder zwischen Pools verschieben, ohne dass die Überwachung des Pools für elastische Datenbanken unterbrochen wird.
Die von der Ankerdatenbank gesammelten Daten enthalten Metriken auf Poolebene und bestimmte Leistungsmetriken auf Datenbankebene für jede Datenbank im Pool, wie z. B. Metriken zur Ressourcennutzung und zur Anforderungsrate für jede Datenbank. In einigen Szenarien kann das Hinzufügen eines SQL-Ziels für die Überwachung eines elastischen Pools als Ganzes die Überwachung jeder einzelnen Datenbank im Pool überflüssig machen.
Bestimmte Überwachungsdaten wie CPU-, Speicher- und Speichernutzung sowie Wartestatistiken werden nur auf der Ebene des elastischen Pools gesammelt, da sie nicht einer einzelnen Datenbank in einem Pool zugeordnet werden können. Umgekehrt sind bestimmte andere Daten wie Abfrageausführungsstatistiken, Datenbank-Eigenschaften, Tabellen- und Index-Metadaten nur verfügbar, wenn Sie einzelne Datenbanken als SQL-Ziele hinzufügen.
Wenn Sie einzelne Datenbanken aus einem elastischen Pool als SQL-Ziele hinzufügen, sollten Sie auch den elastischen Pool als SQL-Ziel hinzufügen. Auf diese Weise erhalten Sie eine vollständigere Ansicht der Leistung von Datenbank und Pool.
Überwachen von dichten Pools für elastische Datenbanken
Ein umfangreicher Pool für elastische Datenbanken enthält eine große Anzahl von Datenbanken, hat jedoch eine relativ kleine Computegröße. Mit dieser Konfiguration können Kunden erhebliche Kosteneinsparungen erzielen, indem die Berechnungsressourcenzuordnung auf ein Minimum festgelegt wird.
Wichtig ist, dass bei diesem Ansatz nur eine kleine Anzahl von Datenbanken im Pool gleichzeitig Abfragen ausgeführt werden.
Warnung
Da Überwachungsabfragen in jeder überwachten Datenbank kontinuierlich ausgeführt werden müssen, empfiehlt es sich nicht, mehr als einige einzelne Datenbanken in einem dichten elastischen Pool zu überwachen.
Wenn Sie viele Datenbanken aus einem dichten elastischen Pool als SQL-Ziele hinzufügen, kann sich die kumulative Ressourcenauslastung durch die überwachungsabfragen, die in jeder Datenbank ausgeführt werden, auf Anwendungsworkloads auswirken, da nicht genügend Ressourcen im Pool vorhanden sind.
Aus demselben Grund sehen Sie möglicherweise Lücken in den gesammelten Daten oder größer als erwartet Intervalle zwischen Datenbeispielen.
Um einen dichten elastischen Pool zu überwachen, ermöglichen Sie die Überwachung auf Poolebene, indem Sie den elastischen Pool selbst als SQL-Ziel hinzufügen. Indem Sie die Gesamtanzahl der Überwachungsabfragen im elastischen Pool reduzieren, vermeiden Sie das Risiko, dass sich Anwendungsworkloads auswirken, während sie weiterhin Daten auf Poolebene in den SQL-flexiblenPool-Datasets sammeln.
Datensammlung in serverlosen Datenbanken
Wenn eine serverlose Datenbank automatisch angehalten wurde, überwacht die Datenbanküberwachung sie genau wie eine bereitgestellte Datenbank.
Wenn Sie die automatische Pause für eine serverlose Datenbank aktivieren, stoppt die Datenbanküberwachungsdatensammlung, wenn die Datenbank angehalten wird. Datenbanküberwachungsabfragen verhindern nicht, dass eine serverlose Datenbank angehalten wird, wenn sie andernfalls angehalten werden kann.
Kurz nach dem Wechsel einer serverlosen Datenbank zu einem Angehaltenen Zustand ändert sich der Status im Zusammenfassungsdashboard des Watchers in "Nicht sammeln". Die zuvor gesammelten Daten für die Datenbank verbleiben im Watcher-Datenspeicher und sind über Dashboards und Abfragen zugänglich.
Die Datensammlung wird innerhalb weniger Minuten nach dem Wechsel der Datenbank vom Angehaltenen in den Onlinestatus fortgesetzt.
Datenresidenz
Kunden können wählen, ob die gesammelten SQL-Überwachungsdaten in einem der drei Datenspeichertypen gespeichert werden sollen:
Eine Datenbank auf einem Azure Data Explorer cluster. Standardmäßig wird für jeden neuen Watcher ein neuer Azure Data Explorer-Cluster erstellt, der sich in derselben Azure-Region befindet wie der Watcher.
Kunden können die spezifische Azure-Region in einer Azure-Geografie als Standort ihres Azure Data Explorer-Clusters und der Datenbank auswählen. Weitere Informationen zu den Datenreplikationsfunktionen in Azure Data Explorer finden Sie unter Überblick über Business Continuity und Disaster Recovery.
Eine Datenbank auf einem kostenlosen Azure Data Explorer-Cluster.
Kunden können die spezifische Azure-Geografie, jedoch nicht die spezifische Azure-Region als Standort für ihren kostenlosen Azure Data Explorer-Cluster und die Datenbank auswählen. Die Datenreplikation in eine andere Region oder Geografie wird nicht unterstützt.
Eine Datenbank in Real-Zeit Analytics in Microsoft Fabric.
Kunden können den geografischen Standort der Datenbank nicht wählen.
Um die Datenresidenz für gesammelte SQL-Überwachungsdaten vollständig zu kontrollieren, müssen Kunden eine Datenbank auf einem Azure Data Explorer-Cluster als Datenspeicher wählen.
Kunden können die Geografie und Region ihres Azure-Data-Explorer-Clusters an die der überwachten Azure-SQL-Ressourcen anpassen. Wenn sich die Azure SQL-Ressourcen in mehreren Regionen befinden, müssen Kunden möglicherweise mehrere Watcher und mehrere Azure Data Explorer-Cluster erstellen, um ihre Anforderungen an die Datenresidenz zu erfüllen.
Datensätze
In diesem Abschnitt werden die für jeden SQL-Zieltyp verfügbaren Datensätze beschrieben, einschließlich der Erfassungshäufigkeiten und Tabellennamen im Datenspeicher.
Hinweis
Während der Vorschau könnten Datasets hinzukommen oder wegfallen. Die Eigenschaften von Datasets wie Name, Beschreibung, Häufigkeit der Erfassung und verfügbare Spalten können sich noch ändern.
| Datasetname | Tabellenname | Häufigkeit der Erfassung (hh:mm:ss) | Beschreibung |
|---|---|---|---|
| Aktive Sitzungen | sqldb_database_active_sessions |
00:00:30 |
Jede Zeile stellt eine Sitzung dar, die eine Anforderung ausführt, ein Blocker ist oder eine offene Transaktion hat. |
| Sicherungsverlauf | sqldb_database_sql_backup_history |
00:05:00 |
Jede Zeile stellt eine erfolgreich abgeschlossene Datenbanksicherung dar. |
| Verarbeitung von Änderungen | sqldb_database_change_processing |
00:01:00 |
Jede Zeile stellt eine Momentaufnahme aggregierter Protokollscanstatistiken für ein Feature zur Verarbeitung von Änderungen wie Change Data Capture oder Änderungsfeed (Azure Synapse Link) dar. |
| Fehler bei der Verarbeitung von Änderungen | sqldb_database_change_processing_errors |
00:01:00 |
Jede Zeile stellt einen Fehler dar, der während der Verarbeitung von Änderungen aufgetreten ist, wenn ein Feature zur Verarbeitung von Änderungen wie Change Data Capture oder Änderungsfeed (Azure Synapse Link) eingesetzt wird. |
| Konnektivität | sqldb_database_connectivity |
00:00:30 |
Jede Zeile stellt einen Verbindungstest (eine Anmeldung und eine Abfrage) für eine Datenbank dar. |
| Georeplikate | sqldb_database_geo_replicas |
00:00:30 |
Jede Zeile stellt ein primäres oder sekundäres Georeplikat dar, einschließlich Metadaten und Statistiken zur Georeplikation. |
| Index-Metadaten | sqldb_database_index_metadata |
00:30:00 |
Jede Zeile stellt eine Indexpartition dar und enthält Indexdefinition, Eigenschaften und Betriebsstatistiken. |
| Arbeitsspeichernutzung | sqldb_database_memory_utilization |
00:00:30 |
Jede Zeile stellt einen Speicherclerk dar und enthält den Speicherverbrauch durch den Clerk in der Instanz des Datenbankmoduls. |
| Fehlende Indizes | sqldb_database_missing_indexes |
00:15:00 |
Jede Zeile stellt einen Index dar, der im Fall seiner Erstellung die Abfrageleistung verbessern könnte. |
| Arbeitsspeichermangel-Ereignisse | sqldb_database_oom_events |
00:01:00 |
Jede Zeile stellt ein Ereignis mit unzureichendem Arbeitsspeicher in der Datenbank-Engine dar. |
| Leistungsindikatoren (allgemein) | sqldb_database_performance_counters_common |
00:00:10 |
Jede Zeile stellt einen Leistungsindikator der Instanz der Datenbank-Engine dar. Dieses Dataset enthält häufig verwendete Leistungsindikatoren. |
| Leistungsindikatoren (detailliert) | sqldb_database_performance_counters_detailed |
00:01:00 |
Jede Zeile stellt einen Leistungsindikator der Instanz der Datenbank-Engine dar. Dieses Dataset enthält Leistungsindikatoren, die gegebenenfalls für eine detaillierte Überwachung und Problembehandlung erforderlich sind. |
| Eigenschaften | sqldb_database_properties |
00:05:00 |
Jede Zeile stellt eine Datenbank dar und enthält Datenbankoptionen, Grenzwerte für die Ressourcengovernance und andere Datenbankmetadaten. |
| Abfragelaufzeitstatistiken | sqldb_database_query_runtime_stats |
00:15:00 |
Jede Zeile stellt ein Laufzeitintervall des Abfragespeichers dar und enthält Abfrage-Ausführungsstatistiken. |
| Abfragewartestatistiken | sqldb_database_query_wait_stats |
00:15:00 |
Jede Zeile stellt ein Laufzeitintervall des Abfragespeichers dar und enthält Statistiken zu Wartekategorien. |
| Replikate | sqldb_database_replicas |
00:00:30 |
Jede Zeile stellt ein Datenbankreplikat dar, einschließlich Metadaten und Statistiken zur Replikation. Enthält das primäre Replikat und Georeplikate, wenn sie im primären System erfasst werden, und sekundäre Replikate, wenn sie in einem sekundären System erfasst werden. |
| Ressourcenverwendung | sqldb_database_resource_utilization |
00:00:15 |
Jede Zeile stellt Statistiken zum CPU-, Daten-E/A-, Protokoll-E/A- und sonstigen Ressourcenverbrauch für eine Datenbank in einem Zeitintervall dar. |
| Sitzungsstatistiken | sqldb_database_session_stats |
00:01:00 |
Jede Zeile stellt eine Zusammenfassung der Sitzungsstatistiken für eine Datenbank dar, aggregiert nach nicht-additiven Sitzungsattributen wie Anmeldename, Hostname, Anwendungsname usw. |
| SOS-Planer | sqldb_database_sos_schedulers |
00:01:00 |
Jede Zeile stellt einen SOS-Planer dar und enthält Statistiken für den Planer, den CPU-Knoten und den Arbeitsspeicherknoten. |
| Speicher-E/A | sqldb_database_storage_io |
00:00:10 |
Jede Zeile stellt eine Datenbankdatei dar und enthält kumulative Statistiken zu IOPS, Durchsatz und Wartezeit für die Datei. |
| Speichernutzung | sqldb_database_storage_utilization |
00:01:00 |
Jede Zeile stellt eine Datenbank dar und enthält ihre Speichernutzung, einschließlich tempdb, Abfragespeicher und permanentem Versionsspeicher. |
| Tabellenmetadaten | sqldb_database_table_metadata |
00:30:00 |
Jede Zeile stellt eine Tabelle oder eine indizierte Sicht dar und enthält Metadaten wie Zeilenanzahl, Platzbedarf, Datenkomprimierung, Spalten und Einschränkungen. Wird erfasst, wenn die Anzahl der Tabellen und indizierten Ansichten in der Datenbank 100 oder weniger beträgt. |
| Wartestatistiken | sqldb_database_wait_stats |
00:00:10 |
Jede Zeile stellt einen Wartetyp dar und enthält kumulative Wartezeitstatistiken der Instanz der Datenbank-Engine. Bei Datenbanken in einem Pool für elastische Datenbanken werden nur datenbankbezogene Wartezeitstatistiken erfasst. |
Hinweis
Bei Datenbanken in einem Pool für elastische Datenbanken werden die SQL-Datenbank-Datasets, die Daten auf Poolebene enthalten, nicht erfasst. Dazu gehören die Datasets für Arbeitsspeichernutzung, Ereignisse mit unzureichendem Arbeitsspeicher, Leistungsindikatoren (allgemein) und Leistungsindikatoren (detailliert). Das Dataset für die Wartezeitstatistik wird erfasst, enthält jedoch nur datenbankbezogene Wartezeiten. Dadurch wird vermieden, dass von jeder Datenbank im Pool die gleichen Daten erfasst werden.
Daten auf Poolebene werden in den Datasets für den Pool für elastische SQL-Datenbanken erfasst. Für einen bestimmten Pool für elastische Datenbanken enthalten die Datasets für Leistungsindikatoren (allgemein) und Leistungsindikatoren (detailliert) Metriken auf Poolebene und gewisse Metriken auf Datenbankebene, wie CPU, Daten-E/A, Protokollschreibvorgänge, Anforderungen, Transaktionen usw.
Allgemeine Spalten
für jeden SQL-Zieltyp haben die Datensätze gemeinsame Spalten, wie in den folgenden Tabellen beschrieben.
| Spaltenname | Beschreibung |
|---|---|
subscription_id |
Die Azure-Abonnement-ID der SQL-Datenbank. |
resource_group_name |
Der Name der Ressourcengruppe der SQL-Datenbank. |
resource_id |
Die Azure-Ressource-ID der SQL-Datenbank. |
sample_time_utc |
Die Zeit, zu der die Werte in der Zeile beobachtet wurden, in UTC. |
collection_time_utc |
Die Zeit, zu der die Zeile vom Watcher erfasst wurde, in UTC. Diese Spalte ist in Datasets vorhanden, bei denen die Erfassungszeit von der Probenzeit abweichen kann. |
replica_type |
Eine der folgenden Optionen: Primär, Hochverfügbarkeit sekundär, Geo-Replikationsweiterleitung, Benannt sekundär. |
logical_server_name |
Der Name des logischen Servers in Azure SQL-Datenbank, der die überwachte Datenbank oder den Pool für elastische Datenbanken enthält. |
database_name |
Der Name der überwachten Datenbank. |
database_id |
Datenbank-ID der überwachten Datenbank, eindeutig innerhalb des logischen Servers. |
logical_database_id |
Ein eindeutiger Datenbankbezeichner, der während der Lebensdauer der Benutzerdatenbank unverändert bleibt. Die Umbenennung der Datenbank oder die Änderung ihres Serviceziels ändert diesen Wert nicht. |
physical_database_id |
Ein eindeutiger Datenbankbezeichner für die aktuelle physische Datenbank, die der Benutzerdatenbank entspricht. Durch Ändern des Serviceobjekts der Datenbank ändert sich dieser Wert. |
replica_id |
Ein eindeutiger Bezeichner für ein Hyperscale-Compute-Replikat. |
Ein Dataset hat sowohl die Spalte sample_time_utc als auch collection_time_utc, wenn es Proben enthält, die vor der Erfassung der Zeile durch den Datenbankwatcher beobachtet wurden. Ansonsten sind Beobachtungszeit und Erfassungszeit gleich, und das Dataset enthält nur die Spalte sample_time_utc.
Beispielsweise wird das Dataset sqldb_database_resource_utilization aus der dynamischen Verwaltungssicht (DMV) sys.dm_db_resource_stats abgeleitet. Die DMV enthält die Spalte end_time, bei der es sich um die Beobachtungszeit für jede Zeile handelt, die aggregierte Ressourcenstatistiken für ein Intervall von 15-Sekunden angibt. Diese Zeit wird in der Spalte sample_time_utc angegeben. Wenn ein Watcher diese DMV abfragt, enthält das Resultset möglicherweise mehrere Zeilen, jeweils mit einem anderen end_time-Wert. Alle diese Zeilen haben denselben Wert collection_time_utc.
Zugehöriger Inhalt
- Überwachen von Azure SQL-Workloads mit Datenbankwatcher (Vorschau)
- Schnellstart: Erstellen eines Watchers zum Überwachen von Azure SQL (Vorschau)
- Erstellen und Konfigurieren eines Watchers (Vorschau)
- Analysieren von Datenbanküberwachungsdaten (Vorschau)
- Datenbankwächter-Warnungen (Vorschau)
- Datenbanküberwacher FAQ