Überwachen von materialisierten Sichten

Überwachen Sie die Integrität der materialisierten Ansicht auf folgende Weise:

Hinweis

Bei der Materialisierung werden niemals Daten übersprungen, auch wenn es zu konstanten Fehlern kommt. Die Ansicht gibt immer den aktuellsten Momentaufnahme der Abfrage zurück, basierend auf allen Datensätzen in der Quelltabelle. Konstante Fehler beeinträchtigen die Abfrageleistung erheblich, führen jedoch nicht zu falschen Ergebnissen in Ansichtsabfragen.

Problembehandlung bei fehlerhaften materialisierten Ansichten

Die MaterializedViewHealth Metrik gibt an, ob eine materialisierte Ansicht fehlerfrei ist. Bevor eine materialisierte Sicht fehlerhaft wird, nimmt ihr Alter, das durch die MaterializedViewAgeSeconds Metrik festgestellt wird, allmählich zu.

Eine materialisierte Ansicht kann aus einem oder allen der folgenden Gründe fehlerhaft werden:

  • Der Materialisierungsprozess schlägt fehl. Die MaterializedViewResult-Metrik und der .show materialized-view failures Befehl können helfen, die Grundursache des Fehlers zu identifizieren.
  • Möglicherweise hat das System die materialisierte Ansicht aufgrund von Änderungen an der Quelltabelle automatisch deaktiviert. Sie können überprüfen, ob die Ansicht deaktiviert ist, indem Sie die IsEnabled vom .show materialized-view Befehl zurückgegebene Spalte überprüfen. Weitere Details finden Sie unter Einschränkungen für materialisierte Ansichten und bekannte Probleme.
  • Der Cluster verfügt nicht über genügend Kapazität, um alle eingehenden Daten pünktlich zu materialisieren. In diesem Fall können keine Fehler bei der Ausführung auftreten. Das Alter der Ansicht nimmt jedoch allmählich zu, da sie mit der Erfassungsrate nicht Schritt halten kann. Es kann mehrere Ursachen für diese Situation geben:
    • Es gibt mehr materialisierte Ansichten im Cluster, und der Cluster verfügt nicht über genügend Kapazität, um alle Ansichten auszuführen. Unter Kapazitätsrichtlinie für materialisierte Ansicht können Sie die Standardeinstellungen für die Anzahl der gleichzeitig ausgeführten materialisierten Ansichten ändern.
    • Die Materialisierung ist langsam, da es zu viele Datensätze gibt, die in jedem Materialisierungszyklus aktualisiert werden müssen. Weitere Informationen dazu, warum sich dies auf die Leistung der Ansicht auswirkt, finden Sie unter Funktionsweise materialisierter Ansichten. Die Anzahl der Erweiterungen, die Updates in jedem Zyklus erfordern, wird in der MaterializedViewExtentsRebuild Metrik angegeben.

MaterializedViewResult-Metrik

Die MaterializedViewResult Metrik stellt Informationen über das Ergebnis eines Materialisierungszyklus bereit und kann verwendet werden, um Probleme in der materialisierten Ansicht health status zu identifizieren. Die Metrik umfasst die Database Und und MaterializedViewName eine Result Dimension.

Die Result Dimension kann einen der folgenden Werte aufweisen:

  • Erfolg: Die Materialisierung wurde erfolgreich abgeschlossen.

  • SourceTableNotFound: Die Quelltabelle der Materialisierungsansicht wurde gelöscht. Die materialisierte Ansicht wird dadurch automatisch deaktiviert.

  • SourceTableSchemaChange: Das Schema der Quelltabelle wurde auf eine Weise geändert, die nicht mit der Definition der materialisierten Ansicht kompatibel ist (materialisierte Ansichtsabfrage entspricht nicht dem materialisierten Ansichtsschema). Die materialisierte Ansicht wird dadurch automatisch deaktiviert.

  • Unzureichende Kapazität: Der Cluster verfügt nicht über genügend Kapazität, um die materialisierte Ansicht zu materialisieren. Dies kann entweder auf fehlende Erfassungskapazität oder fehlende Materialisierungskapazität hinweisen. Unzureichende Kapazitätsausfälle können vorübergehend sein, aber wenn sie häufig auftreten, wird empfohlen, den Cluster hochzuskalieren oder die relevante Kapazität in der Richtlinie zu erhöhen.

  • InsufficientResources: Der Cluster verfügt nicht über genügend Ressourcen (CPU/Arbeitsspeicher), um die materialisierte Ansicht zu materialisieren. Dieser Fehler kann vorübergehend sein, aber wenn er erneut auftritt, versuchen Sie, den Cluster hoch- oder herauszuskalieren.

    Mit dem folgenden Befehl wird beispielsweise die Workloadgruppe materialisierte Ansichten so geändert, dass während der Materialisierung maximal 64 GB Arbeitsspeicher pro Knoten verwendet werden (der Standardwert ist 15 GB):

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

    Hinweis

    MaxMemoryPerQueryPerNode kann nicht auf mehr als 50 % des Gesamtspeichers jedes Knotens festgelegt werden.

Materialisierte Ansichten in Followerdatenbanken

Materialisierte Ansichten können in Followerdatenbanken definiert werden. Die Überwachung dieser materialisierten Ansichten sollte jedoch auf der Leader-Datenbank basieren, in der die materialisierte Ansicht definiert ist. Dies gilt insbesondere in folgenden Fällen:

  • Metriken im Zusammenhang mit der Ausführung der materialisierten Ansicht (MaterializedViewResult, MaterializedViewExtentsRebuild) sind nur in der Leader-Datenbank vorhanden. Metriken im Zusammenhang mit der Überwachung (MaterializedViewAgeSeconds, MaterializedViewHealth, MaterializedViewRecordsInDelta) werden auch in den Followerdatenbanken angezeigt.
  • Der Befehl .show materialized-view failures funktioniert nur in der Leader-Datenbank.

Nachverfolgen des Ressourcenverbrauchs

Ressourcenverbrauch materialisierter Ansichten: Die Ressourcen, die vom Materialisierungsprozess für materialisierte Ansichten verbraucht werden, können mithilfe des .show commands-and-queries Befehls nachverfolgt werden. Filtern Sie die Datensätze nach einer bestimmten Ansicht, indem Sie folgendes verwenden (ersetzen DatabaseName und ViewName):

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