Monitorare le viste materializzate

Monitorare l'integrità della vista materializzata nei modi seguenti:

Nota

La materializzazione non ignora mai i dati, anche se si verificano errori costanti. La vista è sempre garantita di restituire lo snapshot più aggiornato della query, in base a tutti i record nella tabella di origine. Gli errori costanti riducono significativamente le prestazioni delle query, ma non causano risultati non corretti nelle query di visualizzazione.

Risoluzione dei problemi relativi alle viste materializzate non integre

La MaterializedViewHealth metrica indica se una vista materializzata è integra. Prima che una vista materializzata diventi non integra, la MaterializedViewAgeSeconds sua età, annotata dalla metrica, aumenta gradualmente.

Una vista materializzata può diventare non integra per uno o tutti i motivi seguenti:

  • Il processo di materializzazione ha esito negativo. La metrica MaterializedViewResult e il .show materialized-view failures comando consentono di identificare la causa radice dell'errore.
  • Il sistema potrebbe aver disabilitato automaticamente la vista materializzata, a causa delle modifiche apportate alla tabella di origine. È possibile verificare se la visualizzazione è disabilitata controllando la IsEnabled colonna restituita dal .show materialized-view comando . Vedere altri dettagli sulle limitazioni delle visualizzazioni materializzate e sui problemi noti
  • Il cluster non ha capacità sufficiente per materializzare tutti i dati in ingresso in tempo reale. In questo caso, potrebbero non esserci errori nell'esecuzione. Tuttavia, l'età della vista aumenta gradualmente, poiché non è in grado di mantenere il passo con la frequenza di inserimento. Potrebbero esserci diverse cause radice per questa situazione:
    • Nel cluster sono presenti più viste materializzate e il cluster non ha capacità sufficiente per eseguire tutte le viste. Vedere i criteri di capacità di visualizzazione materializzati per modificare le impostazioni predefinite per il numero di viste materializzate eseguite contemporaneamente.
    • La materializzazione è lenta perché sono presenti troppi record da aggiornare in ogni ciclo di materializzazione. Per altre informazioni sul motivo per cui questo influisce sulle prestazioni della visualizzazione, vedere come funzionano le viste materializzate. Il numero di extent che richiedono aggiornamenti in ogni ciclo viene fornito nella MaterializedViewExtentsRebuild metrica.

Metrica MaterializedViewResult

La MaterializedViewResult metrica fornisce informazioni sul risultato di un ciclo di materializzazione e può essere usata per identificare i problemi nello stato di integrità della visualizzazione materializzata. La metrica include e DatabaseMaterializedViewName e una Result dimensione.

La Result dimensione può avere uno dei valori seguenti:

  • Operazione riuscita: materializzazione completata correttamente.

  • SourceTableNotFound: tabella di origine della vista materializzazione eliminata. Di conseguenza, la visualizzazione materializzata viene disabilitata automaticamente.

  • SourceTableSchemaChange: lo schema della tabella di origine è cambiato in modo che non sia compatibile con la definizione della vista materializzata (la query di visualizzazione materializzata non corrisponde allo schema della vista materializzata). Di conseguenza, la visualizzazione materializzata viene disabilitata automaticamente.

  • InsufficientCapacity: il cluster non ha capacità sufficiente per materializzare la vista materializzata. Ciò può indicare capacità di inserimento mancante o capacità di viste materializzate mancanti. Gli errori di capacità insufficienti possono essere temporanei, ma se si verificano di nuovo spesso è consigliabile aumentare il numero di istanze del cluster o aumentare la capacità pertinente nei criteri.

  • InsufficientResources: Il cluster non dispone di risorse sufficienti (CPU/memoria) per materializzare la vista materializzata. Questo errore può essere temporaneo, ma se tenta di aumentare o aumentare il numero di istanze del cluster.This failure may be transient, but it reoccurs try scaling the cluster up or out.

    Ad esempio, il comando seguente modificherà il gruppo di carico di lavoro viste materializzate in modo da usare un massimo di 64 gigabyte (GB) di memoria per nodo durante la materializzazione (il valore predefinito è 15 GB):

    .alter-merge workload_group ['$materialized-views'] ```
    {
      "RequestLimitsPolicy": {
        "MaxMemoryPerQueryPerNode": {
          "Value": 68719241216
        }
      }
    } ```
    

    Nota

    MaxMemoryPerQueryPerNode non può essere impostato su più del 50% della memoria totale di ogni nodo.

Viste materializzate nei database follower

Le viste materializzate possono essere definite nei database follower. Tuttavia, il monitoraggio di queste viste materializzate deve essere basato sul database leader, in cui è definita la vista materializzata. In particolare:

  • Le metriche correlate all'esecuzione di viste materializzate (MaterializedViewResult, MaterializedViewExtentsRebuild) sono presenti solo nel database leader. Le metriche correlate al monitoraggio (MaterializedViewAgeSeconds, MaterializedViewHealth, MaterializedViewRecordsInDelta) verranno visualizzate anche nei database follower.
  • Il comando .show materialized-view failures funziona solo nel database leader.

Tenere traccia dell'utilizzo delle risorse

Consumo delle risorse delle viste materializzate: è possibile tenere traccia delle risorse utilizzate dal processo di materializzazione delle viste materializzate usando il .show commands-and-queries comando . Filtrare i record per una visualizzazione specifica usando quanto segue (sostituire DatabaseName e ViewName):

.show commands-and-queries 
| where Database  == "DatabaseName" and ClientActivityId startswith "DN.MaterializedViews;ViewName;"