Erstellen und Verwalten von Speicherlebenszyklusrichtlinien

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;
Copy

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())
Copy

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 inkonsistente Verhalten zu vermeiden, konvertieren Sie in Ihrem Ausdruck Zeitstempel in Daten:

event_time < TO_DATE(DATEADD(DAY, -400, CURRENT_TIMESTAMP()))
Copy

Diese Methode 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.

Um eine Speicherlebenszyklusrichtlinie mit dem Namen my_slp neu zu erstellen, geben Sie die DDL zurück, wie im folgenden Beispiel gezeigt:

SELECT GET_DDL('policy','my_slp');
Copy

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, wie im nachfolgenden Beispiel gezeigt, 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 Berechtigungen der Speicherlebenszyklusrichtlinie.

  • 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);
Copy

Um die Richtlinie unter Verwendung der angegebenen Spalten an eine bestehende Tabelle anzuhängen, verwenden Sie ALTER TABLE, wie im folgenden Beispiel gezeigt:

ALTER TABLE my_table ADD STORAGE LIFECYCLE POLICY my_slp
  ON (col1);
Copy

Anwenden einer Richtlinie als einmaliger Vorgang

Wenn Sie historische Daten nur einmal als einmaligen Vorgang löschen oder archivieren müssen, empfehlen wir die folgende Methode:

  1. Erstellen Sie eine Speicherlebenszyklusrichtlinie und hängen Sie sie dann an die Tabelle an.

  2. Warten Sie, bis die Richtlinie ausgeführt wurde, und archivieren oder veralten Sie die Daten dann.

    Überwachen Sie die INFORMATION_SCHEMA-, ,.STORAGE_LIFECYCLE_POLICY_HISTORY-Tabellenfunktion, um zu bestätigen, dass der Prozess abgeschlossen ist.

  3. Um wiederkehrende Gebühren zu vermeiden, entfernen Sie die Speicherlebenszyklusrichtlinie aus der Tabelle.

    Speicherlebenszyklusrichtlinien verursachen Kosten pro Ausführung.

Diese Methode 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

Um eine Speicherlebenszyklusrichtlinie aus einer Tabelle zu entfernen, verwenden Sie ALTER TABLE, wie im folgenden Beispiel gezeigt:

ALTER TABLE my_table DROP STORAGE LIFECYCLE POLICY;
Copy
  • Mit diesem Befehl 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.