Erstellen und Verwalten von Speicherlebenszyklusrichtlinien¶
Bemerkung
Speicherlebenszyklusrichtlinien sind derzeit nicht in Regionen für Regierungsbehörden verfügbar.
In den folgenden Abschnitten wird erläutert, wie Sie Speicherlebenszyklusrichtlinien für Ihre Tabellen erstellen, erneut erstellen und verwalten.
Erstellen einer Speicherlebenszyklusrichtlinie¶
Um eine Speicherlebenszyklusrichtlinie zu erstellen, verwenden Sie den CREATE STORAGE LIFECYCLE POLICY-Befehl.
Wenn Sie eine Speicherlebenszyklusrichtlinie erstellen, können Sie eine Archivebene auswählen und optional einen Archivierungszeitraum (in Tagen) festlegen. Wenn Sie einen Archivierungszeitraum festlegen, verschiebt Snowflake Tabellenzeilen, die dem Richtlinienausdruck entsprechen, für die angegebene Anzahl von Tagen in einen niedrigeren Storage Tier, bevor die Zeilen gelöscht werden. Snowflake aktiviert auch die Änderungsverfolgung für alle Tabellen, an die Sie die Richtlinie anhängen.
Beispiel:
CREATE STORAGE LIFECYCLE POLICY my_slp
AS (event_ts TIMESTAMP, account_id NUMBER)
RETURNS BOOLEAN ->
event_ts < DATEADD(DAY, -60, CURRENT_TIMESTAMP())
AND EXISTS (
SELECT 1 FROM closed_accounts
WHERE id = account_id
)
ARCHIVE_TIER = COOL
ARCHIVE_FOR_DAYS = 90;
Bemerkung
Hinweise zur Verwendung von Tabellen mit Archivspeicherrichtlinien finden Sie unter Archivierungsspeicherrichtlinien.
Best Practices: Verwenden von Datumskonvertierungen für zeitbasierte Ausdrücke¶
Um die Leistung zu verbessern und eine konsistente Ausführung der Richtlinien sicherzustellen, konvertieren Sie beim Vergleichen von Zeitwerten die Zeitstempel in Ihre Richtlinienausdrücke in Datumsangaben.
Betrachten Sie beispielsweise folgenden Richtlinienausdruck:
event_time < DATEADD(DAY, -400, CURRENT_TIMESTAMP())
Dieser Vergleich umfasst auch die Zeitkomponente des Zeitstempels, was zu inkonsistentem Verhalten führen kann. Wenn Daten in chronologischer Reihenfolge nach event_time eingefügt werden, wirkt sich die Ausführungszeit der Richtlinie darauf aus, wie viele Zeilen aus jeder Datei gelöscht werden.
Um dieses Problem zu vermeiden, konvertieren Sie in Ihrem Ausdruck Zeitstempel in Daten:
TO_DATE(event_time) < TO_DATE(DATEADD(DAY, -400, CURRENT_TIMESTAMP()))
Dieser Ansatz ermöglicht eine konsistente Ausführung von Richtlinien unabhängig von der Tageszeit.
Neuerstellung einer Speicherlebenszyklusrichtlinie¶
Dieses Feature erweitert den GET_DDL-Befehl, um eine angegebene Speicherlebenszyklusrichtlinie neu zu erstellen. Dies kann der Fall sein, wenn Sie die Archivierungsebene einer Richtlinie ändern möchten.
Geben Sie die DDL zurück, um eine Speicherlebenszyklusrichtlinie mit dem Namen my_slp neu zu erstellen.
SELECT GET_DDL('policy','my_slp');
Ausgabe:
---------------------------------------------------------------------+
GET_DDL('POLICY','SLP') |
---------------------------------------------------------------------+
create or replace storage lifecycle policy SLP as |
(event_ts timestamp, account_id number)
returns boolean ->
event_ts < dateadd(day, -60, current_timestamp())
and exists (
select 1 from closed_accounts
where id = account_id
)
ARCHIVE_FOR_DAYS = 365 |
; |
---------------------------------------------------------------------+
Verwalten der Speicherlebenszyklusrichtlinien für Tabellen¶
Verwenden Sie die folgenden Optionen, um Anhänge von Speicherlebenszyklusrichtlinien zu verwalten.
Anhängen einer Richtlinie an eine Tabelle¶
Sie können mehrere Tabellen mit einer einzigen Speicherlebenszyklusrichtlinie verwalten. Hängen Sie die Richtlinie an, wenn Sie die Tabelle erstellen oder ändern.
Verwenden Sie CREATE TABLE, um eine Tabelle zu erstellen und die Richtlinie unter Verwendung der angegebenen Spalten an eine neue Tabelle anzuhängen.
Bemerkung
Sie müssen über die erforderlichen Berechtigungen verfügen, um die Richtlinie anwenden zu können. Weitere Informationen zu den erforderlichen Berechtigungen finden Sie unter Storage lifecycle policy privileges.
Einer Tabelle kann nur genau eine Speicherlebenszyklusrichtlinie zugeordnet sein.
Die Anzahl der Spalten muss mit der Anzahl der Argumente in der Signatur der Richtlinienfunktion übereinstimmen und die Spaltendaten müssen mit den Argumenttypen kompatibel sein.
Verknüpfte Richtlinien sind nicht betroffen, wenn Sie Tabellenspalten umbenennen. Snowflake ordnet Richtlinien mithilfe der Spalten-IDs zu.
Um Ausdrücke von Speicherlebenszyklusrichtlinien auszuwerten und anzuwenden, umgeht Snowflake intern und vorübergehend alle Governance-Richtlinien einer Tabelle.
CREATE TABLE my_table
...
WITH STORAGE LIFECYCLE POLICY my_slp ON (col1);
Verwenden Sie ALTER TABLE, um die Richtlinie an eine bestehende Tabelle unter Verwendung der angegebenen Spalten anzuhängen.
ALTER TABLE my_table ADD STORAGE LIFECYCLE POLICY my_slp
ON (col1);
Anwenden einer Richtlinie als einmaliger Vorgang¶
Wenn Sie historische Daten nur einmal löschen oder archivieren müssen (einmaliger Vorgang), empfehlen wir den folgenden Ansatz:
Erstellen Sie eine Speicherlebenszyklusrichtlinie und hängen Sie sie an die Tabelle an.
Warten Sie, bis die Richtlinie ausgeführt wurde, und archivieren oder veralten Sie die Daten. Überwachen Sie die INFORMATION_SCHEMA-, ,.STORAGE_LIFECYCLE_POLICY_HISTORY-Tabellenfunktion, um zu bestätigen, dass der Prozess abgeschlossen ist.
Um wiederkehrende Gebühren zu vermeiden, entfernen Sie die Speicherlebenszyklusrichtlinie aus der Tabelle. Speicherlebenszyklusrichtlinien verursachen Kosten pro Ausführung.
Dieser Ansatz stellt sicher, dass Sie nur für eine einzige Ausführung bezahlen und nicht für laufende tägliche Gebühren für eine Richtlinie, die bereits alle in Frage kommenden Daten verarbeitet hat. Weitere Informationen über Kosten finden Sie unter Abrechnung für Speicherlebenszyklusrichtlinien.
Entfernen einer Richtlinie aus einer Tabelle¶
Verwenden Sie ALTER TABLE zum Entfernen einer Speicherlebenszyklusrichtlinie aus einer Tabelle.
ALTER TABLE my_table DROP STORAGE LIFECYCLE POLICY;
Dadurch werden alle zukünftigen Richtlinienausführungen für diese Tabelle entfernt.
Die laufenden Richtlinienausführungen werden möglicherweise abgeschlossen, bevor sie aus der Tabelle gelöscht werden.
Um eine Speicherlebenszyklusrichtlinie zu löschen, müssen Sie über die OWNERSHIP-Berechtigung für die Tabelle verfügen, an die die Richtlinie angehängt ist.