Richtlinien für materialisierte Sichten

Dieser Artikel enthält Informationen zu Richtlinien, die für materialisierte Ansichten festgelegt werden können.

Aufbewahrungs- und Zwischenspeicherungsrichtlinie

Eine materialisierte Ansicht verfügt über eine Aufbewahrungsrichtlinie und eine Zwischenspeicherungsrichtlinie. Die materialisierte Ansicht leitet standardmäßig die Datenbankaufbewahrungs- und Zwischenspeicherungsrichtlinien ab. Diese Richtlinien können mithilfe von Aufbewahrungsrichtlinienverwaltungsbefehlen oder Zwischenspeicherungsbefehlen für die Richtlinienverwaltung geändert werden.

Beide Richtlinien werden nur auf den materialisierten Teil der materialisierten Ansicht angewendet. Eine Erläuterung der Unterschiede zwischen dem materialisierten Teil und dem Deltateil finden Sie unter Funktionsweise materialisierter Ansichten. Wenn die Zwischenspeicherungsrichtlinie einer materialisierten Ansicht beispielsweise auf 7d festgelegt ist, die Zwischenspeicherungsrichtlinie der Quelltabelle jedoch auf 0d festgelegt ist, kann es beim Abfragen der materialisierten Ansicht trotzdem zu Datenträgerfehlern kommen. Dieses Verhalten tritt auf, weil die Quelltabelle (Deltateil) ebenfalls an der Abfrage teilnimmt.

Die Aufbewahrungsrichtlinie der materialisierten Ansicht hängt nicht mit der Aufbewahrungsrichtlinie der Quelltabelle zusammen. Die Aufbewahrungsrichtlinie der Quelltabelle kann kürzer sein als die Aufbewahrungsrichtlinie der materialisierten Sicht, wenn Quelldatensätze für einen kürzeren Zeitraum erforderlich sind. Es wird empfohlen, eine Mindestaufbewahrungsrichtlinie von mindestens wenigen Tagen und die Wiederherstellbarkeit in der Quelltabelle auf true festzulegen. Diese Einstellung ermöglicht eine schnelle Wiederherstellung bei Fehlern und zu Diagnosezwecken.

Hinweis

Die Nullaufbewahrungsrichtlinie für die Quelltabelle wird nicht unterstützt.

Die Aufbewahrungs- und Zwischenspeicherungsrichtlinien hängen beide von der Erstellungszeit des Umfangs ab. Das letzte Update für einen Datensatz bestimmt den Umfang der Erstellungszeit für eine materialisierte Ansicht.

Hinweis

Der Materialisierungsprozess versucht, die Anzahl der Updates für den materialisierten Teil der Ansicht zu minimieren. In Fällen, in denen ein Datensatz in der Ansicht nicht aktualisiert werden muss , wird er nicht aktualisiert. Wenn es sich bei der materialisierten Ansicht beispielsweise um eine take_any(*) Aggregation handelt, werden neue Datensätze derselben Gruppenschlüssel nicht erneut in der Ansicht erfasst, sodass die Aufbewahrungsrichtlinie vom frühesten erfassten Datensatz stammt.

Partitionierungsrichtlinie

Eine Partitionierungsrichtlinie kann auf eine materialisierte Ansicht angewendet werden. Es wird empfohlen, eine Partitionierungsrichtlinie nur für eine materialisierte Ansicht zu konfigurieren, wenn die meisten oder alle Ansichtsabfragen nach einem der Gruppenschlüssel der materialisierten Ansicht filtern. Diese Situation ist bei mehrinstanzenfähigen Lösungen üblich, bei denen einer der Gruppenschlüssel der materialisierten Ansicht der Bezeichner des Mandanten ist (z. B tenantId. , customerId). Weitere Informationen finden Sie im ersten Anwendungsfall, der auf der Seite Unterstützte Szenarien für Partitionierungsrichtlinien beschrieben wird.

Informationen zu den Befehlen zum Ändern der Partitionierungsrichtlinie einer materialisierten Ansicht finden Sie unter Partitionierungsrichtlinienbefehle.

Das Hinzufügen einer Partitionierungsrichtlinie für eine materialisierte Ansicht erhöht die Anzahl der Ausdehnungen in der materialisierten Ansicht und erzeugt mehr "Arbeit" für den Materialisierungsprozess. Weitere Informationen zum Grund für dieses Verhalten finden Sie im Prozess zum Neuerstellen von Erweiterungen, der in der Funktionsweise materialisierter Ansichten erwähnt wird.

Sicherheitsrichtlinie auf Zeilenebene

Eine Sicherheit auf Zeilenebene kann mit mehreren Einschränkungen auf eine materialisierte Ansicht angewendet werden:

  • Die Richtlinie kann nur auf materialisierte Ansichten mit arg_max()/arg_min()/take_any() )-Aggregationsfunktionen angewendet werden, oder wenn die Sicherheitsabfrage auf Zeilenebene auf die Gruppe nach Schlüsseln der materialisierten Ansichtsaggregation verweist.
  • Die Richtlinie wird nur auf den materialisierten Teil der Ansicht angewendet.
    • Wenn dieselbe Sicherheitsrichtlinie auf Zeilenebene nicht für die Quelltabelle der materialisierten Sicht definiert ist, gibt das Abfragen der materialisierten Sicht möglicherweise Datensätze zurück, die von der Richtlinie ausgeblendet werden sollen. Dies geschieht, weil die Abfrage der materialisierten Ansicht auch die Quelltabelle abfragt.
    • Es wird empfohlen, dieselbe Sicherheitsrichtlinie auf Zeilenebene sowohl für die Quelltabelle als auch für die materialisierte Ansicht zu definieren, wenn es sich bei der Ansicht um eine arg_max() oder arg_min()/take_any() handelt.
  • Beim Definieren einer Sicherheitsrichtlinie auf Zeilenebene in der Quelltabelle einer materialisierten ansicht mit arg_max() oder arg_min()/take_any() schlägt der Befehl fehl, wenn für die materialisierte Ansicht selbst keine Sicherheitsrichtlinie auf Zeilenebene definiert ist. Der Zweck des Fehlers besteht darin, den Benutzer auf ein potenzielles Datenleck hinzuweisen, da die materialisierte Ansicht möglicherweise Informationen verfügbar macht. Führen Sie eine der folgenden Aktionen aus, um diesen Fehler zu beheben:
    • Definieren Sie die Sicherheitsrichtlinie auf Zeilenebene für die materialisierte Ansicht.
    • Wählen Sie aus, um den Fehler zu ignorieren, indem Sie dem Befehl "Richtlinie ändern" eine Eigenschaft hinzufügen allowMaterializedViewsWithoutRowLevelSecurity . Beispiel:
    .alter table SourceTable policy row_level_security enable with (allowMaterializedViewsWithoutRowLevelSecurity=true) "RLS_function"

Befehle zum Konfigurieren einer Sicherheitsrichtlinie auf Zeilenebene für eine materialisierte Ansicht finden Sie unter row_level_security Richtlinienbefehle.