Delen via


Database watcher-gegevensverzameling en gegevenssets (preview)

van toepassing op:Azure SQL DatabaseAzure SQL Managed Instance-

Database watcher verzamelt bewakingsgegevens van SQL-systeemweergaven en neemt deze op in het gegevensarchief in de vorm van gegevenssets. Elke gegevensset wordt gevormd met behulp van de gegevens uit een of meer SQL-systeemweergaven. Voor elke gegevensset is er een afzonderlijke tabel in het gegevensarchief.

Dataverzameling

Database watcher verzamelt bewakingsgegevens met periodieke intervallen met behulp van T-SQL-query's. Gegevens die worden verzameld bij elke uitvoering van een query, worden een voorbeeld genoemd. Frequentie van voorbeeldverzameling verschilt per gegevensset. Het is bijvoorbeeld mogelijk dat gegevens zoals SQL-prestatiemeteritems elke 10 seconden worden verzameld, terwijl meestal statische gegevens, zoals databaseconfiguratie, elke vijf minuten worden verzameld. Zie Gegevenssets voor meer informatie.

Database watcher maakt gebruik van streamingopname in Azure Data Explorer en Real-Time Analytics in Microsoft Fabric om bijna realtime bewaking te bieden. Verzamelde SQL-bewakingsgegevens zijn doorgaans beschikbaar voor rapportage en analyse in minder dan 10 seconden. U kunt de latentie van gegevensopname op de dashboards van de database-watcher bewaken met behulp van de koppeling Gegevensopnamestatistieken .

Interactie tussen database-watcher en toepassingsworkloads

Het inschakelen van database watcher heeft waarschijnlijk geen waarneembare invloed op de prestaties van de toepassingsworkload. Meer frequente bewakingsquery's worden doorgaans uitgevoerd in het onder de seconde bereik, terwijl query's waarvoor mogelijk meer tijd nodig is, bijvoorbeeld om grote gegevenssets te retourneren, met infrequente intervallen worden uitgevoerd.

Om het risico op impact op toepassingsworkloads verder te verminderen, worden alle query's van database-watcher in Azure SQL Database beheerd als een interne workload. Wanneer er sprake is van resourceconflicten, is het resourceverbruik door de bewakingsquery's beperkt tot een klein deel van de totale resources die beschikbaar zijn voor de database. Hiermee krijgen toepassingsworkloads voorrang boven het monitoren van query's.

Om gelijktijdigheidsconflicten, zoals blokkeren en deadlocks tussen gegevensverzameling en databaseworkloads die op uw Azure SQL-resources draaien, te voorkomen, gebruiken de bewakingsquery's korte lock timeouts en een lage deadlock prioriteit. Als er een gelijktijdigheidsconflict is, krijgen de toepassingsworkloadquery’s prioriteit.

In de volgende scenario's ziet u mogelijk hiaten in de verzamelde gegevens:

  • Als het totale resourcegebruik hoog is of als gelijktijdigheidsconflicten optreden tussen bewakingsquery's en toepassingsworkloads. In deze gevallen worden monitoring queries gedeprioritiseerd ten behoeve van applicatieworkloads.
  • Als u een automatiseringssysteem hebt dat langdurige sessies beëindigt. Om hiaten in verzamelde gegevens te voorkomen, sluit u een sessie uit waarin de program_name kolom in de sys.dm_exec_sessions systeemweergave is SQLExternalMonitoring of x_ms_reserved_sql_external_monitoring.

Gegevensverzameling in elastische pools

Als u een elastische pool wilt bewaken, moet u één database in de pool aanwijzen als ankerdatabase. Een watcher maakt verbinding met de ankerdatabase. Omdat de watcher de machtiging VIEW SERVER PERFORMANCE STATE, bieden systeemweergaven in de ankerdatabase bewakingsgegevens voor de pool als geheel.

Hint

U kunt een lege database toevoegen aan elke elastische pool die u wilt bewaken en deze aanwijzen als de ankerdatabase. Op deze manier kunt u andere databases in en uit de pool verplaatsen, of tussen pools, zonder de bewaking van elastische pools te onderbreken.

Gegevens die worden verzameld uit de ankerdatabase bevatten metrische gegevens op poolniveau en bepaalde metrische gegevens op databaseniveau voor elke database in de pool, zoals resourcegebruik en metrische gegevens voor aanvraagsnelheid voor elke database. Voor sommige scenario's kan het toevoegen van een SQL-doel voor een elastische pool om een elastische pool als geheel te bewaken, het onnodig maken om elke afzonderlijke database in de pool te bewaken.

Bepaalde bewakingsgegevens, zoals CPU op poolniveau, geheugen, opslaggebruik en wachtstatistieken, worden alleen verzameld op het niveau van de elastische pool, omdat deze niet kunnen worden toegeschreven aan een afzonderlijke database in een pool. Daarentegen zijn bepaalde andere gegevens, zoals queryruntimestatistieken, database-eigenschappen, tabel- en indexmetagegevens, alleen beschikbaar als u afzonderlijke databases als SQL-doelen toevoegt.

Als u afzonderlijke databases uit een elastische pool als SQL-doelen toevoegt, moet u de elastische pool ook toevoegen als een SQL-doel. Op deze manier krijgt u een volledigere weergave van de prestaties van de database en de pool.

Dichte elastische pools bewaken

Een dichte elastische pool bevat een groot aantal databases, maar heeft een relatief kleine rekenkracht. Met deze configuratie kunnen klanten aanzienlijke kostenbesparingen realiseren door de toewijzing van rekenresources tot een minimum te beperken.

Belangrijk is dat bij deze benadering wordt ervan uitgegaan dat slechts een klein aantal databases in de pool tegelijkertijd query's uitvoert.

Waarschuwing

Omdat bewakingsquery's continu moeten worden uitgevoerd in elke bewaakte database, is het niet raadzaam om meer dan een paar afzonderlijke databases in een dichte elastische pool te bewaken.

Als u veel databases uit een dichte elastische pool toevoegt als SQL-doelen, kan het cumulatieve resourcegebruik door de bewakingsquery's die in elke database worden uitgevoerd, van invloed zijn op toepassingsworkloads vanwege onvoldoende resources in de pool.

Om dezelfde reden ziet u mogelijk hiaten in de verzamelde gegevens of groter dan verwachte intervallen tussen gegevensvoorbeelden.

Als u een dichte elastische pool wilt bewaken, schakelt u bewaking op poolniveau in door de elastische pool zelf toe te voegen als een SQL-doel. Door het totale aantal bewakingsquery's in de elastische pool te verminderen, voorkomt u het risico dat dit van invloed is op toepassingsworkloads, terwijl u nog steeds bruikbare gegevens op poolniveau in de gegevenssets van de elastische SQL-pool verzamelt.

Gegevensverzameling in serverloze databases

Als een serverloze database automatisch pauzeren is uitgeschakeld, controleert de databasemonitor deze net zoals een ingerichte database.

Als u automatisch onderbreken inschakelt voor een serverloze database, stopt het verzamelen van database-watchergegevens wanneer de database wordt onderbroken. Database watcher-bewakingsqueries verhinderen niet dat een serverloze database gepauzeerd wordt als deze in aanmerking komt om gepauzeerd te worden.

Kort nadat een serverloze database is overgezet naar een onderbroken status, verandert de status op het overzichtsdashboard van de watcher in Niet verzamelen. De eerder verzamelde gegevens voor de database blijven in het watcher-gegevensarchief en zijn toegankelijk via dashboards en query's.

Het verzamelen van gegevens wordt binnen enkele minuten hervat nadat de database is overgegaan van de pausestand naar de online toestand.

Gegevensopslaglocatie

Klanten kunnen ervoor kiezen om verzamelde SQL-bewakingsgegevens op te slaan in een van de drie typen gegevensarchieven:

  • Een database in een Azure Data Explorer-cluster . Er wordt standaard een nieuw Azure Data Explorer-cluster gemaakt voor elke nieuwe watcher en bevindt zich in dezelfde Azure-regio als de watcher.

    Klanten kunnen de specifieke Azure-regio in een Azure-geografie kiezen als de locatie van hun Azure Data Explorer-cluster en de database. Zie het overzicht van bedrijfscontinuïteit en herstel na noodgevallen voor meer informatie over mogelijkheden voor gegevensreplicatie in Azure Data Explorer.

  • Een database op een gratis Azure Data Explorer-cluster.

    Klanten kunnen de specifieke Azure-geografie kiezen, maar niet de specifieke Azure-regio als de locatie van hun gratis Azure Data Explorer-cluster en de database. Gegevensreplicatie naar een andere regio of geografie wordt niet ondersteund.

  • Een database in Real-Time Analytics in Microsoft Fabric.

    Klanten kunnen de geografische locatie van de database niet kiezen.

Om de gegevenslocatie voor verzamelde SQL-bewakingsgegevens volledig te beheren, moeten klanten een database kiezen in een Azure Data Explorer-cluster als het gegevensarchief.

Klanten kunnen de geografie en regio van hun Azure Data Explorer-cluster afstemmen op de geografie en regio van de Azure SQL-resources die worden bewaakt. Wanneer de Azure SQL-resources zich in meerdere regio's bevinden, moeten klanten mogelijk meerdere watchers en meerdere Azure Data Explorer-clusters maken om te voldoen aan hun vereisten voor gegevenslocatie.

Gegevensverzamelingen

In deze sectie worden de gegevenssets beschreven die beschikbaar zijn voor elk SQL-doeltype, inclusief verzamelingsfrequenties en tabelnamen in het gegevensarchief.

Opmerking

Tijdens de preview kunnen gegevenssets worden toegevoegd en verwijderd. Gegevensseteigenschappen, zoals naam, beschrijving, verzamelingsfrequentie en beschikbare kolommen, kunnen worden gewijzigd.

Naam van de gegevensset Tabelnaam Frequentie van verzamelen (uu:mm:ss) Beschrijving
Actieve sessies sqldb_database_active_sessions 00:00:30 Elke rij vertegenwoordigt een sessie waarop een aanvraag wordt uitgevoerd, een blokker is of een geopende transactie heeft.
Backupgeschiedenis sqldb_database_sql_backup_history 00:05:00 Elke rij vertegenwoordigt een voltooide databaseback-up.
Wijzigingsverwerking sqldb_database_change_processing 00:01:00 Elke rij vertegenwoordigt een momentopname van statistische logboekscanstatistieken voor een functie voor wijzigingsverwerking, zoals Change Data Capture of Change Feed (Azure Synapse Link).
Fouten bij het verwerken van wijzigingen sqldb_database_change_processing_errors 00:01:00 Elke rij vertegenwoordigt een fout die is opgetreden tijdens het verwerken van wijzigingen, wanneer u een functie voor wijzigingsverwerking gebruikt, zoals Change Data Capture of Change Feed (Azure Synapse Link).
Connectiviteit sqldb_database_connectivity 00:00:30 Elke rij vertegenwoordigt een connectiviteitstest (een aanmelding en een query) voor een database.
Geo-replica's sqldb_database_geo_replicas 00:00:30 Elke rij vertegenwoordigt een primaire of een secundaire geo-replica, inclusief metagegevens en statistieken van geo-replicatie.
Indexmetagegevens sqldb_database_index_metadata 00:30:00 Elke rij vertegenwoordigt een indexpartitie en bevat indexdefinitie, eigenschappen en operationele statistieken.
Geheugengebruik sqldb_database_memory_utilization 00:00:30 Elke rij vertegenwoordigt een geheugenbeheerder en bevat geheugenverbruik door de beheerder in het exemplaar van de database-engine.
Ontbrekende indexen sqldb_database_missing_indexes 00:15:00 Elke rij vertegenwoordigt een index die de queryprestaties kan verbeteren als deze wordt gemaakt.
Gebeurtenissen van onvoldoende geheugen sqldb_database_oom_events 00:01:00 Elke rij vertegenwoordigt een geheugentekort incident in de database-engine.
Prestatiemeters (algemeen) sqldb_database_performance_counters_common 00:00:10 Elke rij vertegenwoordigt een prestatiemeter van het database-engine-exemplaar. Deze gegevensset bevat veelgebruikte tellers.
Prestatiemeteritems (gedetailleerd) sqldb_database_performance_counters_detailed 00:01:00 Elke rij vertegenwoordigt een prestatiemeter van het database-engine-exemplaar. Deze gegevensset bevat tellers die mogelijk nodig zijn voor gedetailleerde bewaking en probleemoplossing.
Eigenschappen sqldb_database_properties 00:05:00 Elke rij vertegenwoordigt een database en bevat databaseopties, resourcebeheerlimieten en andere databasemetagegevens.
Statistieken van query-uitvoering sqldb_database_query_runtime_stats 00:15:00 Elke rij vertegenwoordigt een Query Store-runtime-interval en bevat queryuitvoeringsstatistieken.
Querywachtstatistieken sqldb_database_query_wait_stats 00:15:00 Elke rij vertegenwoordigt een Runtime-interval van Query Store en bevat wachtcategoriestatistieken.
Replica's sqldb_database_replicas 00:00:30 Elke rij vertegenwoordigt een databasereplica, inclusief replicatiemetagegevens en statistieken. Bevat de primaire replica en geo-replica's wanneer deze op de primaire worden verzameld, en secundaire replica's wanneer ze op een secundaire worden verzameld.
Resourcegebruik sqldb_database_resource_utilization 00:00:15 Elke rij vertegenwoordigt cpu-, gegevens-IO-, logboek-IO- en andere statistieken over resourceverbruik voor een database in een tijdsinterval.
Sessiestatistieken sqldb_database_session_stats 00:01:00 Elke rij vertegenwoordigt een samenvatting van sessiestatistieken voor een database, geaggregeerd door niet-additieve sessiekenmerken zoals aanmeldingsnaam, hostnaam, toepassingsnaam, enzovoort.
SOS-planners sqldb_database_sos_schedulers 00:01:00 Elke rij vertegenwoordigt een SOS-planner en bevat statistieken voor de scheduler, het CPU-knooppunt en het geheugenknooppunt.
Opslag-IO sqldb_database_storage_io 00:00:10 Elke rij vertegenwoordigt een databasebestand en bevat cumulatieve IOPS-, doorvoer- en latentiestatistieken voor het bestand.
Opslaggebruik sqldb_database_storage_utilization 00:01:00 Elke rij vertegenwoordigt een database en bevat het opslaggebruik, waaronder tempdbQuery Store en Permanente versieopslag.
Metagegevens van tabel sqldb_database_table_metadata 00:30:00 Elke rij vertegenwoordigt een tabel of een geïndexeerde weergave en bevat metagegevens zoals aantal rijen, ruimtegebruik, gegevenscompressie, kolommen en beperkingen. Wordt verzameld wanneer het aantal tabellen en geïndexeerde weergaven in de database 100 of minder is.
Wachtstatistieken sqldb_database_wait_stats 00:00:10 Elke rij vertegenwoordigt een wachttype en bevat cumulatieve wachtstatistieken van het exemplaar van de database-engine. Voor databases in een elastische pool worden alleen database-specifieke wachtstatistieken verzameld.

Opmerking

Voor databases in een elastische groep worden de datasets van de SQL-database met gegevens op poolniveau niet verzameld. Dit omvat het geheugengebruik, out-of-memory gebeurtenissen, prestatiecounters (common) en prestatiecounters (gedetailleerd) gegevenssets. De gegevensset Wachtstatistieken wordt verzameld, maar bevat alleen wachttijden binnen het databasebereik. Dit voorkomt het verzamelen van dezelfde gegevens uit elke database in de pool.

Gegevens op poolniveau worden verzameld in de gegevenssets van de elastische SQL-pool . Voor een bepaalde elastische pool bevatten de prestatiemeteritems (common) en prestatiemeteritems (gedetailleerde) gegevenssets metrische gegevens op poolniveau en bepaalde metrische gegevens op databaseniveau, zoals CPU, Gegevens-I/O, Schrijven van logboeken, Aanvragen, Transacties, enzovoort.

Algemene kolommen

Voor elk TYPE SQL-doel hebben gegevenssets gemeenschappelijke kolommen, zoals beschreven in de volgende tabellen.

Kolomnaam Beschrijving
subscription_id De Azure-abonnements-id van de SQL-database.
resource_group_name De naam van de resourcegroep van de SQL-database.
resource_id De Azure-resource-id van de SQL-database.
sample_time_utc Het tijdstip waarop de waarden in de rij werden waargenomen, in UTC.
collection_time_utc Het tijdstip waarop de rij is verzameld door de watcher, in UTC. Deze kolom is aanwezig in gegevenssets waarbij de verzamelingstijd mogelijk verschilt van de voorbeeldtijd.
replica_type Een van: primaire, ha secundaire, geo-replicatie-doorstuurserver, benoemd secundair.
logical_server_name De naam van de logische server in Azure SQL Database die de gemonitorde database of de elastische pool omvat.
database_name De naam van de bewaakte database.
database_id Database-id van de bewaakte database, uniek binnen de logische server.
logical_database_id Een unieke database-id die gedurende de levensduur van de gebruikersdatabase ongewijzigd blijft. Als u de naam van de database wijzigt of de servicedoelstelling wijzigt, wordt deze waarde niet gewijzigd.
physical_database_id Een unieke database-id voor de huidige fysieke database die overeenkomt met de gebruikersdatabase. Als u de databaseservicedoelstelling wijzigt, wordt deze waarde gewijzigd.
replica_id Een unieke identificator voor een Hyperscale-rekenreplica.

Een gegevensset bevat zowel sample_time_utc- als collection_time_utc-kolommen als het voorbeelden bevat die zijn waargenomen voordat de rij door databasewatcher is verzameld. Anders zijn de observatietijd en verzamelingstijd hetzelfde en bevat de gegevensset alleen de sample_time_utc kolom.

De gegevensset wordt bijvoorbeeld sqldb_database_resource_utilization afgeleid van de sys.dm_db_resource_stats dynamische beheerweergave (DMV). De DMV bevat de end_time kolom, die de observatietijd voor elke rij toont, waarbij de verzamelde resource-statistieken gedurende een interval van 15 seconden worden gerapporteerd. Deze tijd wordt gerapporteerd in de sample_time_utc kolom. Wanneer een watcher deze DMV opvraagt, kan de resultatenset meerdere rijen bevatten, elk met een andere end_time. Al deze rijen hebben dezelfde collection_time_utc waarde.