Verwalten von Streams¶
Unter diesem Thema werden die administrativen Aufgaben beschrieben, die mit der Verwaltung von Streams verbunden sind.
Aktivieren der Änderungsverfolgung für Ansichten und zugrunde liegende Tabellen¶
Damit Benutzer Änderungsdaten zu einer Ansicht abfragen können, muss die Änderungsverfolgung für die Ansicht und die zugrunde liegenden Tabellen aktiviert sein.
Nur der Objekteigentümer (d. h. die Rolle mit der OWNERSHIP-Berechtigung) für eine bestimmte Ansicht oder zugrunde liegende Tabellen kann die Änderungsverfolgung aktivieren.
Die folgenden Optionen stehen zur Verfügung, um die Änderungsverfolgung zu aktivieren:
Erstellen eines Streams auf der Ansicht mit der Rolle des Ansichtseigentümers. Mit dieser Aktion wird die Änderungsverfolgung für die Ansicht aktiviert.
Wenn dieselbe Rolle auch Eigentümer der zugrunde liegenden Tabellen ist, wird die Änderungsverfolgung auch für die Tabellen aktiviert. Andernfalls muss der Tabelleneigentümer die Änderungsverfolgung für die Tabellen explizit aktivieren. Diese Schritte werden unter Änderungsverfolgung auf den zugrunde liegenden Tabellen explizit aktivieren (unter diesem Thema) erläutert.
Explizites Aktivieren der Änderungsverfolgung auf der Ansicht und den Tabellen. Eine Anleitung dazu finden Sie in den übrigen Anleitungen in diesem Abschnitt.
Explizites Aktivieren der Änderungsverfolgung auf Ansichten¶
Legen Sie den Parameter CHANGE_TRACKING beim Erstellen einer Ansicht (mit CREATE VIEW) oder später (mit ALTER VIEW) fest.
Beachten Sie, dass die Änderungsverfolgung auch in den zugrunde liegenden Tabellen der Ansicht explizit aktiviert sein muss. Eine Anleitung dazu finden Sie unter Änderungsverfolgung auf den zugrunde liegenden Tabellen explizit aktivieren (unter diesem Thema).
Erstellen Sie zum Beispiel eine sichere Ansicht im aktuellen Schema, die eine Teilmenge von Zeilen aus einer Tabelle auswählt:
CREATE SECURE VIEW v CHANGE_TRACKING = TRUE AS SELECT col1, col2 FROM t;
Ändern Sie zum Beispiel eine bestehende Ansicht, um die Änderungsverfolgung zu aktivieren:
ALTER VIEW v2 SET CHANGE_TRACKING = TRUE;
Änderungsverfolgung auf den zugrunde liegenden Tabellen explizit aktivieren¶
Wichtig
Beim Erstellen oder Ändern einer Ansicht zur Angabe von CHANGE_TRACKING werden die zugehörigen abhängigen Datenbankobjekte automatisch aktualisiert, um die Änderungsverfolgung zu aktivieren. Während der Operation sind die zugrunde liegenden Ressourcen gesperrt, was zu Latenzen bei DDL/DML-Operationen führen kann. Weitere Informationen dazu finden Sie unter Ressourcensperrung.
Wenn der Benutzer, der die Anweisung ausführt, keine Rolle mit ausreichenden Berechtigungen (OWNERSHIP) angegeben hat, schlägt die Anweisung fehl. Die zugrunde liegenden Datenbankobjekte werden nicht aktualisiert, und die Sperren werden aufgehoben.
Legen Sie den Parameter CHANGE_TRACKING beim Erstellen einer Tabelle (mit CREATE TABLE) oder später (mit ALTER TABLE) fest.
Erstellen Sie beispielsweise eine Tabelle im aktuellen Schema:
CREATE TABLE t (col1 STRING, col2 NUMBER) CHANGE_TRACKING = TRUE;
Ändern Sie beispielsweise eine vorhandene Tabelle, um die Änderungsverfolgung zu aktivieren:
ALTER TABLE t1 SET CHANGE_TRACKING = TRUE;
Wichtig
Wenn ein TABLE-Objekt erstellt oder geändert wird, um CHANGE_TRACKING zu spezifizieren, wird die Tabelle für die Dauer der Operation gesperrt, was zu Latenzen bei DML-Operationen führen kann. Weitere Informationen dazu finden Sie unter Ressourcensperrung.
Vermeiden des Veraltens von Streams¶
Verbrauchen Sie die Stream-Datensätze innerhalb einer DML-Anweisung während der Aufbewahrungsfrist für die Tabelle, und verbrauchen Sie die Änderungsdaten regelmäßig vor dem STALE_AFTER-Zeitstempel (d. h. innerhalb der erweiterten Datenaufbewahrungsfrist für das Quellobjekt). Außerdem wird durch den Aufruf von SYSTEM$STREAM_HAS_DATA für den Stream verhindert, dass dieser veraltet, vorausgesetzt, der Stream ist leer und die Funktion SYSTEM$STREAM_HAS_DATA gibt FALSE zurück.
Wichtig
Wenn SYSTEM$STREAM_HAS_DATA für einen Stream TRUE zurückgibt, sollten Sie den Stream in einer DML-Operation verbrauchen, auch wenn das Ergebnis falsch positiv ist. Wenn Sie den Stream nicht verbrauchen, gibt SYSTEM$STREAM_HAS_DATA TRUE zurück und alle Aufgaben, die diese Funktion in ihrer WHEN-Klausel verwenden, überspringen nicht die Ausführung. Dies führt zu unnötigen Aufgabenausführungen und damit verbundenen Warehouse-Gebühren.
Um den Stream effizient zu nutzen, wenn das Ergebnis falsch positiv ist – zum Beispiel gibt das Abfragen des Streams mit SELECT COUNT(*) FROM stream_name keine Datensätze zurück – verwenden Sie eine Anweisung wie das folgende Beispiel:
CREATE TEMPORARY TABLE _unused_table AS SELECT * FROM my_stream WHERE 1=0;
Diese Anweisung verbraucht den Stream, da CREATE TABLE AS SELECT eine DML-Transaktion ist. Die WHERE 1=0-Klausel filtert alle Daten heraus, sodass nichts verarbeitet wird. Dies erhöht den Stream-Offset und SYSTEM$STREAM_HAS_DATA gibt FALSE zurück, bis neue Änderungen auftreten.
Weitere Informationen zu Datenaufbewahrungsfristen finden Sie unter Verstehen und Verwenden von Time Travel.
Um die Datenaufbewahrungsfrist eines Streams anzuzeigen, führen Sie den Befehl DESCRIBE STREAM oder SHOW STREAMS aus. Der Zeitstempel in der Spalte stale_after gibt an, wann der Stream voraussichtlich veraltet sein wird (oder wann er veraltet ist, wenn der Zeitstempel in der Vergangenheit liegt). Dieser Zeitstempel wird berechnet, indem der größere der beiden Parameter DATA_RETENTION_TIME_IN_DAYS oder MAX_DATA_EXTENSION_TIME_IN_DAYS zum aktuellen Zeitstempel addiert wird. Wenn der Zeitstempel in der Vergangenheit liegt, kann der Stream bereits veraltet sein. Die Spalte stale zeigt auch an, ob der Stream voraussichtlich veraltet ist, auch wenn der Stream möglicherweise noch nicht wirklich veraltet ist.
Durch den Verbrauch der Änderungsdaten für einen Stream wird der Zeitstempel STALE_AFTER hinausgeschoben.
Weitere Informationen dazu finden Sie unter Datenaufbewahrungsfrist und Veraltung.
Anzeigen und Verwalten von Streams in Snowsight¶
Um einen Stream in Snowsight anzuzeigen und zu verwalten, gehen Sie wie folgt vor:
Melden Sie sich bei Snowsight an.
Wählen Sie im Navigationsmenü die Option Catalog » Database Explorer aus.
Wählen Sie für eine bestimmte Datenbank und ein bestimmtes Schema Streams aus, und wählen Sie den Stream aus, den Sie verwalten möchten.
Wenn Sie den Stream in Snowsight anzeigen, können Sie Folgendes tun:
Überprüfen Sie im Abschnitt Details den Tabellennamen, auf den sich der Stream bezieht, den Typ des Streams und ob der Stream veraltet ist oder nicht.
Überprüfen Sie die SQL-Anweisung, die zum Erstellen des Streams verwendet wurde.
Verwalten Sie die Berechtigungen für den Stream. Siehe Verwalten von Objektberechtigungen mit Snowsight.