Delen via


Gerealiseerde weergaven bewaken

Van toepassing op: ✅Microsoft FabricAzure Data Explorer-

Controleer de status van de gerealiseerde weergave op de volgende manieren:

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 kolom Consumed 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 in Total, 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.
  • 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 is false. 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.
  • 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
    • 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 de MinDataScannedTime 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.
  • 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, waarbij i 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.

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;"