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

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

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');
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, 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);
Copy

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

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:

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

  2. 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.

  3. 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;
Copy
  • 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.