Create and manage storage lifecycle policies¶
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.
When you create a storage lifecycle policy, you can choose an archive tier and optionally set an archival period in days. If you set an archival period, Snowflake moves table rows that match the policy expression into a lower-cost storage tier for the specified number of days before expiring the rows. Snowflake also enables change tracking on any tables that you attach the policy to.
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
For considerations when you work with tables that have archival storage policies, see 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.
To avoid this inconsistent behavior, convert timestamps to dates in your expression:
TO_DATE(event_time) < TO_DATE(DATEADD(DAY, -400, CURRENT_TIMESTAMP()))
This method provides consistent policy execution regardless of the time of day.
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.
To recreate a storage lifecycle policy named my_slp, return the DDL, as shown in the following example:
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, 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 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);
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);
Anwenden einer Richtlinie als einmaliger Vorgang¶
If you only need to expire or archive historical data once, as a one-time operation, we recommend the following procedure:
Create, and then attach a storage lifecycle policy to your table.
Warten Sie, bis die Richtlinie ausgeführt wurde, und archivieren oder veralten Sie die Daten dann.
Monitor the INFORMATION_SCHEMA.STORAGE_LIFECYCLE_POLICY_HISTORY table function to confirm the process is complete.
To prevent recurring charges, remove the storage lifecycle policy from the table.
Speicherlebenszyklusrichtlinien verursachen Kosten pro Ausführung.
This method ensures that you only pay for a single execution instead of ongoing daily charges for a policy that has already processed all eligible data. For more information about cost, see Abrechnung für Speicherlebenszyklusrichtlinien.
Entfernen einer Richtlinie aus einer Tabelle¶
To remove a storage lifecycle policy from a table, use ALTER TABLE, as shown in the following example:
ALTER TABLE my_table DROP STORAGE LIFECYCLE POLICY;
This command removes all future policy executions for this table.
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.