Superviser les vues matérialisées

Surveillez l’intégrité de la vue matérialisée des manières suivantes :

Notes

La matérialisation n’ignore jamais les données, même en cas de défaillances constantes. La vue est toujours garantie de retourner les instantané les plus à jour de la requête, en fonction de tous les enregistrements de la table source. Les échecs constants dégradent considérablement les performances des requêtes, mais n’entraînent pas de résultats incorrects dans les requêtes d’affichage.

Résolution des problèmes liés aux vues matérialisées non saines

La MaterializedViewHealth métrique indique si une vue matérialisée est saine. Avant qu’une vue matérialisée ne devienne non saine, son âge, noté par la MaterializedViewAgeSeconds métrique, augmente progressivement.

Une vue matérialisée peut devenir non saine pour l’une ou l’autre des raisons suivantes :

  • Le processus de matérialisation échoue. La métrique MaterializedViewResult et la .show materialized-view failures commande peuvent aider à identifier la cause racine de l’échec.
  • Le système a peut-être automatiquement désactivé la vue matérialisée, en raison de modifications apportées à la table source. Vous pouvez case activée si la vue est désactivée en vérifiant la colonne retournée par la IsEnabled.show materialized-view commande . Pour plus d’informations, consultez Limitations des affichages matérialisés et problèmes connus
  • Le cluster ne dispose pas d’une capacité suffisante pour matérialiser toutes les données entrantes à temps. Dans ce cas, il peut ne pas y avoir d’échecs d’exécution. Toutefois, l’âge de la vue augmente progressivement, car elle n’est pas en mesure de suivre le taux d’ingestion. Il peut y avoir plusieurs causes racines de cette situation :
    • Il existe davantage de vues matérialisées dans le cluster, et le cluster n’a pas une capacité suffisante pour exécuter toutes les vues. Consultez stratégie de capacité de vue matérialisée pour modifier les paramètres par défaut pour le nombre de vues matérialisées exécutées simultanément.
    • La matérialisation est lente, car il y a trop d’enregistrements à mettre à jour dans chaque cycle de matérialisation. Pour en savoir plus sur la raison pour laquelle cela a un impact sur les performances de la vue, consultez le fonctionnement des vues matérialisées. Le nombre d’extensions qui nécessitent des mises à jour dans chaque cycle est fourni dans la MaterializedViewExtentsRebuild métrique.

Métrique MaterializedViewResult

La MaterializedViewResult métrique fournit des informations sur le résultat d’un cycle de matérialisation et peut être utilisée pour identifier les problèmes dans les status d’intégrité de la vue matérialisée. La métrique inclut la Database dimension et MaterializedViewName et .Result

La Result dimension peut avoir l’une des valeurs suivantes :

  • Réussite : la matérialisation s’est terminée avec succès.

  • SourceTableNotFound : la table source de la vue de matérialisation a été supprimée. Par conséquent, la vue matérialisée est automatiquement désactivée.

  • SourceTableSchemaChange : le schéma de la table source a changé d’une manière qui n’est pas compatible avec la définition de la vue matérialisée (la requête de vue matérialisée ne correspond pas au schéma de vue matérialisée). Par conséquent, la vue matérialisée est automatiquement désactivée.

  • InsufficientCapacity : le cluster n’a pas une capacité suffisante pour matérialiser la vue matérialisée. Cela peut indiquer une capacité d’ingestion manquante ou une capacité de vues matérialisées manquante. Les défaillances de capacité insuffisantes peuvent être temporaires, mais si elles se reproduisent souvent, nous vous recommandons d’effectuer un scale-out du cluster ou d’augmenter la capacité pertinente dans la stratégie.

  • InsufficientResources : Le cluster n’a pas suffisamment de ressources (processeur/mémoire) pour matérialiser la vue matérialisée. Cet échec peut être temporaire, mais s’il se reproduit, essayez de mettre à l’échelle le cluster.

    • Si le processus de matérialisation atteint les limites de mémoire, les limites du groupe de charge de travail $materialized-vues peuvent être augmentées pour prendre en charge davantage de mémoire ou de processeur pour le processus de matérialisation.

    Par exemple, la commande suivante modifie le groupe de charge de travail vues matérialisées pour utiliser un maximum de 64 gigaoctets (Go) de mémoire par nœud pendant la matérialisation (la valeur par défaut est de 15 Go) :

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

    Notes

    MaxMemoryPerQueryPerNode ne peut pas être défini sur plus de 50 % de la mémoire totale de chaque nœud.

Vues matérialisées dans les bases de données d’suiveur

Les vues matérialisées peuvent être définies dans les bases de données suivantes. Toutefois, la surveillance de ces vues matérialisées doit être basée sur la base de données leader, où la vue matérialisée est définie. Plus précisément :

  • Les métriques liées à l’exécution de la vue matérialisée (MaterializedViewResult, MaterializedViewExtentsRebuild) sont uniquement présentes dans la base de données leader. Les métriques liées à la surveillance (MaterializedViewAgeSeconds, MaterializedViewHealth, MaterializedViewRecordsInDelta) s’affichent également dans les bases de données suivantes.
  • La commande .show materialized-view failures fonctionne uniquement dans la base de données leader.

Suivre la consommation des ressources

Consommation des ressources des vues matérialisées : les ressources consommées par le processus de matérialisation des vues matérialisées peuvent être suivies à l’aide de la .show commands-and-queries commande . Filtrez les enregistrements d’une vue spécifique à l’aide des éléments suivants (remplacez DatabaseName et ViewName) :

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