Gerealiseerde weergaven bewaken
Van toepassing op: ✅Microsoft Fabric✅Azure Data Explorer-
Controleer de status van de gerealiseerde weergave op de volgende manieren:
- Bewaak gerealiseerde weergavegegevens in de Azure Portal met Azure Monitor-. Gebruik de gerealiseerde metrische gegevens voor weergaveleeftijd,
MaterializedViewAgeSeconds
, als de primaire metriek om de nieuwheid van de weergave te bewaken.
- Bewaak gerealiseerde weergavegegevens in uw Microsoft Fabric-werkruimte. Gebruik de gerealiseerde metrische gegevens voor weergaveleeftijd,
MaterializedViewAgeSeconds
als de primaire metriek om de nieuwheid van de weergave te bewaken. Zie Bewaking inschakelen in uw werkruimtevoor meer informatie.
Bewaak de eigenschap
IsHealthy
met behulp van.show materialized-view
.Controleer op fouten met behulp van
.show materialized-view failures
.
Notitie
Materialisatie slaat nooit gegevens over, zelfs als er constant fouten zijn. De weergave is altijd gegarandeerd om de meest up-to-datummomentopname van de query te retourneren, op basis van alle records in de brontabel. Constante fouten verminderen de prestaties van query's aanzienlijk, maar veroorzaken geen onjuiste resultaten in weergavequery's.
Problemen met beschadigde gerealiseerde weergaven oplossen
Als de metrische MaterializedViewAge
voortdurend toeneemt en de MaterializedViewHealth
metrische waarde laat zien dat de weergave niet in orde is, volgt u deze aanbevelingen om de hoofdoorzaak te identificeren:
Controleer het aantal gerealiseerde weergaven op het cluster en de huidige capaciteit voor gerealiseerde weergaven:
.show capacity | where Resource == "MaterializedView" | project Resource, Total, Consumed
uitvoer
Hulpbron Totaal Verbruikt MaterializedView 1 0 - Het aantal gerealiseerde weergaven dat gelijktijdig kan worden uitgevoerd, is afhankelijk van de capaciteit die wordt weergegeven in de
Total
kolom, terwijl in de kolomConsumed
het aantal gerealiseerde weergaven wordt weergegeven dat momenteel wordt uitgevoerd. U kunt het capaciteitsbeleid voor gerealiseerde weergaven gebruiken om het minimum- en maximumaantal gelijktijdige bewerkingen op te geven, waardoor het standaard gelijktijdigheidsniveau van het systeem wordt overschreven. Het systeem bepaalt de huidige gelijktijdigheid, weergegeven inTotal
, op basis van de beschikbare resources van het cluster. In het volgende voorbeeld wordt de beslissing van het systeem overschreven en worden de minimale gelijktijdige bewerkingen van één naar drie gewijzigd:
.alter-merge cluster policy capacity '{ "MaterializedViewsCapacity": { "ClusterMinimumConcurrentOperations": 3 } }'
- Als u dit beleid expliciet wijzigt, controleert u de status van het cluster en zorgt u ervoor dat andere workloads niet worden beïnvloed door deze wijziging.
- Het aantal gerealiseerde weergaven dat gelijktijdig kan worden uitgevoerd, is afhankelijk van de capaciteit die wordt weergegeven in de
Controleer of er fouten zijn tijdens het materialisatieproces met behulp van .show materialized-view failures.
- Als de fout permanent is, wordt de gerealiseerde weergave automatisch uitgeschakeld. Als u wilt controleren of deze optie is uitgeschakeld, gebruikt u de opdracht .show materialized-view en controleert u of de waarde in de kolom
IsEnabled
isfalse
. Controleer vervolgens de Logboek voor de uitgeschakelde gebeurtenis met de opdracht .show journal. Een voorbeeld van een permanente fout is een schemawijziging in de brontabel waardoor deze niet compatibel is met de gerealiseerde weergave. Zie opdracht .create materialized-viewvoor meer informatie. - Als de fout tijdelijk is, probeert het systeem de bewerking automatisch opnieuw uit te voeren. De fout kan echter de materialisatie vertragen en de leeftijd van de gerealiseerde weergave verhogen. Dit type fout treedt bijvoorbeeld op bij het bereiken van geheugenlimieten of met een time-out voor query's. Zie de volgende aanbevelingen voor meer manieren om tijdelijke fouten op te lossen.
- Als de fout permanent is, wordt de gerealiseerde weergave automatisch uitgeschakeld. Als u wilt controleren of deze optie is uitgeschakeld, gebruikt u de opdracht .show materialized-view en controleert u of de waarde in de kolom
Analyseer het materialisatieproces met behulp van de .show commands-and-query's opdracht. Vervang Databasename en ViewName om te filteren op een specifieke weergave:
.show commands-and-queries | where Database == "DatabaseName" and ClientActivityId startswith "DN.MaterializedViews;ViewName;"
Controleer het geheugenverbruik in de kolom
MemoryPeak
om eventuele bewerkingen te identificeren die zijn mislukt vanwege het bereiken van geheugenlimieten, zoals runaway-query's. Standaard is het materialisatieproces beperkt tot een piek van 15 GB geheugen per knooppunt. Als de query's of opdrachten die tijdens het materialisatieproces worden uitgevoerd, deze waarde overschrijden, mislukt de materialisatie vanwege geheugenlimieten. Als u de piek van het geheugen per knooppunt wilt vergroten, wijzigt u de workloadgroep $materialized weergaven. In het volgende voorbeeld wordt de werkbelastinggroep gerealiseerde weergaven gewijzigd om tijdens de materialisatie maximaal 64 GB geheugenpieken per knooppunt te gebruiken:.alter-merge workload_group ['$materialized-views'] ``` { "RequestLimitsPolicy": { "MaxMemoryPerQueryPerNode": { "Value": 68719241216 } } }
Notitie
MaxMemoryPerQueryPerNode
kan niet groter zijn dan 50% van het totale geheugen dat beschikbaar is op elk knooppunt.Controleer of het materialisatieproces koude cache raakt. In het volgende voorbeeld ziet u cachestatistieken van de afgelopen dag voor de gerealiseerde weergave,
ViewName
:.show commands-and-queries | where ClientActivityId startswith "DN.MaterializedViews;ViewName" | where StartedOn > ago(1d) | extend HotCacheHits = tolong(CacheStatistics.Shards.Hot.HitBytes), HotCacheMisses = tolong(CacheStatistics.Shards.Hot.MissBytes), HotCacheRetrieved = tolong(CacheStatistics.Shards.Hot.RetrieveBytes), ColdCacheHits = tolong(CacheStatistics.Shards.Cold.HitBytes), ColdCacheMisses = tolong(CacheStatistics.Shards.Cold.MissBytes), ColdCacheRetrieved = tolong(CacheStatistics.Shards.Cold.RetrieveBytes) | summarize HotCacheHits = format_bytes(sum(HotCacheHits)), HotCacheMisses = format_bytes(sum(HotCacheMisses)), HotCacheRetrieved = format_bytes(sum(HotCacheRetrieved)), ColdCacheHits =format_bytes(sum(ColdCacheHits)), ColdCacheMisses = format_bytes(sum(ColdCacheMisses)), ColdCacheRetrieved = format_bytes(sum(ColdCacheRetrieved))
uitvoer
HotCacheHits HotCacheMisses HotCacheRetrieved ColdCacheHits ColdCacheMisses ColdCacheRetrieved 26 GB 0 bytes 0 bytes 1 GB 0 bytes 866 MB Als de weergave niet volledig in de hot-cache staat, kan materialisatie schijfmissers ervaren, waardoor het proces aanzienlijk wordt vertraagd.
Door het cachebeleid voor de gerealiseerde weergave te verhogen, voorkomt u cachemissers. Zie voor meer informatie hot- en cold cache- en cachingbeleid en .alter materialized-view policy caching command.
Controleer of de materialisatie oude records scant door de
ScannedExtentsStatistics
te controleren met de opdracht .show query's. Als het aantal gescande gebieden hoog is en deMinDataScannedTime
oud is, moet de materialisatiecyclus alle of de meeste van de gerealiseerde deel van de weergave scannen. De scan is nodig om snijpunten te vinden met de delta. Zie voor meer informatie over de delta- en het gerealiseerde gedeelte Hoe gerealiseerde weergaven werken. De volgende aanbevelingen bieden manieren om de hoeveelheid gescande gegevens in gerealiseerde cycli te verminderen door het snijpunt met de deltate minimaliseren.
Als de materialisatiecyclus een grote hoeveelheid gegevens scant, mogelijk inclusief koude cache, kunt u overwegen de volgende wijzigingen aan te brengen in de gerealiseerde weergavedefinitie:
- Neem een
datetime
group-by-sleutel op in de weergavedefinitie. Dit kan de hoeveelheid gescande gegevens aanzienlijk verminderen, zolang er geen te laat binnenkomende gegevens in deze kolom. Zie Tips voor prestatiesvoor meer informatie. U moet een nieuwe gerealiseerde weergave maken, omdat updates voor group-by-sleutels niet worden ondersteund. - Gebruik een
lookback
als onderdeel van de weergavedefinitie. Zie .create materialized view supported propertiesvoor meer informatie.
- Neem een
- Controleer of er voldoende opnamecapaciteit is door te controleren of de metrische gegevens van de
MaterializedViewResult
metrische gegevens of metrische gegevens over opnamegebruikInsufficientCapacity
waarden weergeven. U kunt de opnamecapaciteit verhogen door de beschikbare resources (voorkeur) te schalen of door het opnamecapaciteitsbeleidte wijzigen.
- Controleer of er voldoende opnamecapaciteit is door te controleren of de
MaterializedViewResult
metrische gegevensInsufficientCapacity
waarden weergeeft. U kunt de opnamecapaciteit vergroten door de beschikbare resources te schalen.
Als de gerealiseerde weergave nog steeds niet in orde is, beschikt de service niet over voldoende capaciteit of resources om alle gegevens op tijd te materialiseren. Houd rekening met de volgende opties:
- Schaal het cluster uit door het minimale aantal exemplaren te verhogen. geoptimaliseerde automatische schaalaanpassing geen rekening houdt met gerealiseerde weergaven en schaalt het cluster niet automatisch uit als gerealiseerde weergaven niet in orde zijn. U moet het minimale aantal exemplaren instellen om het cluster meer resources te bieden voor gerealiseerde weergaven.
- Schaal het Eventhouse uit om het te voorzien van meer resources voor gerealiseerde weergaven. Zie Minimumverbruik inschakelenvoor meer informatie.
- Verdeel de gerealiseerde weergave in verschillende kleinere weergaven, die elk betrekking hebben op een subset van de gegevens. U kunt ze bijvoorbeeld splitsen op basis van een sleutel voor hoge kardinaliteit van de gerealiseerde weergave op basis van de gegroepeerde sleutels van de weergave. Alle weergaven zijn gebaseerd op dezelfde brontabel en elke weergave filtert op
SourceTable | where hash(key, number_of_views) == i
, waarbiji
deel uitmaakt van de set{0,1,…,number_of_views-1}
. Vervolgens kunt u een opgeslagen functie definiëren die samenvoegingen alle kleinere gerealiseerde weergaven. Gebruik deze functie in query's om toegang te krijgen tot de gecombineerde gegevens.
Tijdens het splitsen van de weergave kan het CPU-gebruik toenemen, waardoor de geheugenpiek in materialisatiecycli wordt verminderd. Het verminderen van de geheugenpiek kan helpen als de enkele weergave mislukt vanwege geheugenlimieten.
Metric MaterializedViewResult
De MaterializedViewResult
metrische gegevens bevatten informatie over het resultaat van een materialisatiecyclus en kunnen worden gebruikt om problemen in de gerealiseerde status van de weergave te identificeren. De metrische waarde bevat de dimensie Database
en MaterializedViewName
en een Result
dimensie.
De dimensie Result
kan een van de volgende waarden hebben:
Success: De materialisatie is voltooid.
SourceTableNotFound: de brontabel van de gerealiseerde weergave is verwijderd, zodat de gerealiseerde weergave automatisch wordt uitgeschakeld.
SourceTableSchemaChange: het schema van de brontabel is zodanig gewijzigd dat niet compatibel is met de gerealiseerde weergavedefinitie. Omdat de gerealiseerde weergavequery niet meer overeenkomt met het gerealiseerde weergaveschema, wordt de gerealiseerde weergave automatisch uitgeschakeld.
- InsufficientCapacity: het exemplaar beschikt niet over voldoende capaciteit om de gerealiseerde weergave te materialiseren, vanwege een gebrek aan opnamecapaciteit. Hoewel onvoldoende capaciteitsfouten tijdelijk kunnen zijn, kunt u, als deze zich vaak voordoen, het exemplaar uitschalen of de relevante capaciteit in het beleid verhogen.
- InsufficientCapacity: het exemplaar beschikt niet over voldoende capaciteit om de gerealiseerde weergave te materialiseren vanwege een gebrek aan opnamecapaciteit. Hoewel onvoldoende capaciteitsfouten tijdelijk kunnen zijn, kunt u, als deze zich vaak voordoen, het exemplaar uitschalen of de capaciteit vergroten. Zie Uw capaciteitsgrootteplannen voor meer informatie.
- InsufficientResources: De database beschikt niet over voldoende resources (CPU/geheugen) om de gerealiseerde weergave te materialiseren. Hoewel onvoldoende resourcefouten tijdelijk kunnen zijn, kunt u proberen omhoog of uit te schalen als deze vaak opnieuw optreden. Zie Problemen met beschadigde weergaven oplossenvoor meer ideeën.
Gerealiseerde weergaven in volgdatabases
Gerealiseerde weergaven kunnen worden gedefinieerd in volgdatabases. De bewaking van deze gerealiseerde weergaven moet echter worden gebaseerd op de leader-database, waarbij de gerealiseerde weergave wordt gedefinieerd. Specifiek:
-
metrische gegevens die betrekking hebben op gerealiseerde uitvoering van weergaven (
MaterializedViewResult
,MaterializedViewExtentsRebuild
) zijn alleen aanwezig in de leader-database. Metrische gegevens met betrekking tot bewaking (MaterializedViewAgeSeconds
,MaterializedViewHealth
,MaterializedViewRecordsInDelta
) worden ook weergegeven in de volgdatabases.
- De opdracht .show materialized-view failures werkt alleen in de leader-database.
Resourceverbruik bijhouden
verbruik van gerealiseerde weergaven: de resources die worden gebruikt door het materialisatieproces van gerealiseerde weergaven, kunnen worden bijgehouden met behulp van de opdracht .show commands-and-queries
. Filter de records voor een specifieke weergave met behulp van het volgende (vervang DatabaseName
en ViewName
):
.show commands-and-queries
| where Database == "DatabaseName" and ClientActivityId startswith "DN.MaterializedViews;ViewName;"