Verwenden von temporären und transienten Tabellen

Neben permanenten Tabellen, die der Standardtabellentyp beim Erstellen von Tabellen sind, unterstützt Snowflake auch das Definieren von temporären und transienten Tabellen. Diese Tabellentypen sind besonders nützlich zum Speichern von Daten, die nicht über längere Zeiträume verwaltet werden müssen (z. B. vorübergehende Daten).

Unter diesem Thema:

Temporäre Tabellen

Snowflake unterstützt das Erstellen temporärer Tabellen zum Speichern nicht permanenter, vorübergehender Daten (z. B. ETL-Daten, sitzungsspezifische Daten). Temporäre Tabellen sind nur in der Sitzung vorhanden, in der sie erstellt wurden, und sie bestehen nur für die Dauer der Sitzung. Daher sind sie für andere Benutzer oder Sitzungen nicht sichtbar. Nach Beendigung der Sitzung werden die in der Tabelle gespeicherten Daten vollständig aus dem System gelöscht und können daher weder vom Benutzer, der die Tabelle erstellt hat, noch von Snowflake wiederhergestellt werden.

Bemerkung

Neben Tabellen unterstützt Snowflake auch das Erstellen bestimmter anderer Datenbankobjekte als temporär (z. B. Stagingbereiche). Diese Objekte folgen derselben Semantik (d. h. sie sind sitzungsbasiert und bestehen nur für die Dauer der Sitzung).

Datenspeichernutzung von temporären Tabellen

Während der Dauer des Bestehens einer temporären Tabelle tragen die in der Tabelle gespeicherten Daten zu den Speichergesamtgebühren bei, die Snowflake Ihrem Konto in Rechnung stellt. Um unerwartete Speicheränderungen zu vermeiden, insbesondere wenn Sie in Sitzungen, die länger als 24 Stunden bestehen, große temporäre Tabellen erstellen, empfiehlt Snowflake, diese Tabellen explizit zu löschen, sobald sie nicht mehr benötigt werden. Sie können die Sitzung, in der die Tabelle erstellt wurde, auch explizit beenden, um sicherzustellen, dass keine zusätzlichen Kosten anfallen.

Weitere Informationen dazu finden Sie unter Vergleich von Tabellentypen (unter diesem Thema).

Potenzielle Namenskonflikte mit anderen Tabellentypen

Ähnlich wie die anderen Tabellentypen (transient und permanent) gehören temporäre Tabellen zu einer angegebenen Datenbank und einem angegebenen Schema. Da sie jedoch sitzungsbasiert sind, sind sie nicht an die gleichen Eindeutigkeitsanforderungen gebunden. Dies bedeutet, dass Sie temporäre und nicht temporäre Tabellen mit demselben Namen innerhalb desselben Schemas erstellen können.

Beachten Sie jedoch, dass die temporäre Tabelle in der Sitzung Vorrang vor allen anderen Tabellen mit demselben Namen in demselben Schema hat. Dies kann zu potenziellen Konflikten und unerwartetem Verhalten führen, insbesondere wenn DDL auf temporären und nicht temporären Tabellen ausgeführt wird. Beispiel:

  • Sie können eine temporäre Tabelle mit demselben Namen wie eine vorhandene Tabelle in demselben Schema erstellen, wodurch die vorhandene Tabelle effektiv ausgeblendet wird.

  • Sie können eine Tabelle erstellen, die denselben Namen wie eine vorhandene temporäre Tabelle in demselben Schema hat. Die neu erstellte Tabelle wird jedoch von der temporären Tabelle ausgeblendet.

Alle in der Sitzung auf der Tabelle ausgeführten Abfragen und anderen Operationen wirken sich dann nur auf die temporäre Tabelle aus.

Wichtig

Dieses Verhalten muss unbedingt beachtet werden, wenn Sie eine Tabelle in einer Sitzung löschen und dann Time Travel verwenden, um die Tabelle wiederherzustellen. Das Verhalten muss außerdem beachtet werden, wenn zum Erstellen einer Tabelle CREATE OR REPLACE verwendet wird, denn dabei wird im Wesentlichen eine Tabelle gelöscht (sofern vorhanden) und eine neue Tabelle mit der angegebenen Definition erstellt.

Erstellen einer temporären Tabelle

Um eine temporäre Tabelle zu erstellen, geben Sie einfach das Schlüsselwort TEMPORARY (oder die Abkürzung TEMP) in CREATE TABLE an.

Beachten Sie, dass zum Erstellen einer temporären Tabelle keine CREATE TABLE-Berechtigung für das Schema erforderlich ist, in dem das Objekt erstellt wird.

Beispiel:

CREATE TEMPORARY TABLE mytemptable (id NUMBER, creation_date DATE);
Copy

Bemerkung

Nach dem Erstellen können temporäre Tabellen nicht in einen anderen Tabellentyp konvertiert werden.

Transiente Tabellen

Snowflake unterstützt das Erstellen von transienten Tabellen, die bestehen bleiben, bis sie explizit gelöscht werden, und die allen Benutzern mit den entsprechenden Berechtigungen zur Verfügung stehen. Transiente Tabellen ähneln permanenten Tabellen mit dem Unterschied, dass sie keine Fail-safe-Frist haben. Infolgedessen sind transiente Tabellen speziell für vorübergehende Daten konzipiert, die über eine Sitzung hinaus verfügbar sein müssen (im Gegensatz zu temporären Tabellen), aber nicht dasselbe Datenschutz- und Wiederherstellungsniveau wie permanente Tabellen benötigen.

Datenspeichernutzung von transienten Tabellen

Ähnlich wie bei permanenten Tabellen tragen transiente Tabellen zu den gesamten Speichergebühren bei, die Snowflake Ihrem Konto in Rechnung stellt. Da transiente Tabellen jedoch kein Fail-safe benötigen, entstehen keine entsprechenden Kosten (d. h. Kosten für die Verwaltung der Daten, die für die ausfallsichere Notfallwiederherstellung erforderlich sind).

Weitere Informationen dazu finden Sie unter Vergleich von Tabellentypen (unter diesem Thema).

Transiente Tabellen, die als Klone von permanenten Tabellen erstellt werden

Wenn Sie eine transiente Tabelle als Klon einer permanenten Tabelle erstellen, erstellt Snowflake einen Nullkopie-Klon. Das heißt, wenn die transiente Tabelle erstellt wird, verbraucht sie keinen Datenspeicher, da sie alle vorhandenen Mikropartitionen zusammen mit der ursprünglichen permanenten Tabelle nutzt. Wenn in dem Klon Zeilen hinzugefügt, gelöscht oder aktualisiert werden, entstehen neue Mikropartitionen, die ausschließlich zu dem Klon (in diesem Fall die transiente Tabelle) gehören.

Wenn eine permanente Tabelle gelöscht wird, geht sie für einen Zeitraum von 7 Tagen in den Fail-safe-Status über. Fail-safe-Bytes verursachen Speicherkosten. Wenn eine transiente Tabelle als Klon einer permanenten Tabelle erstellt wird, kann dies die Zeit zwischen dem Löschen der permanenten Tabelle und dem Übergang aller ihrer Bytes in den Fail-safe-Modus verzögern. Wenn der transiente Tabellenklon Mikropartitionen gemeinsam mit der permanenten Tabelle nutzt und dann gelöscht wird, gehen die gemeinsam genutzten Bytes erst dann in den Fail-safe-Status über, wenn die transiente Tabelle gelöscht ist.

Transiente Datenbanken und Schemas

Snowflake unterstützt auch die Erstellung transienter Datenbanken und Schemas. Alle in einem transienten Schema erstellten Tabellen sowie alle in einer transienten Datenbank erstellten Schemas sind per Definition transient.

Erstellen einer transienten Tabelle, eines transienten Schemas oder einer transienten Datenbank

Um eine transiente Tabelle, ein transientes Schema oder eine transiente Datenbank zu erstellen, geben Sie beim Erstellen des Objekts einfach das Schlüsselwort TRANSIENT an:

So erstellen Sie beispielsweise eine transiente Tabelle:

CREATE TRANSIENT TABLE mytranstable (id NUMBER, creation_date DATE);
Copy

Bemerkung

Nach dem Erstellen können transiente Tabellen nicht in einen anderen Tabellentyp konvertiert werden.

Vergleich von Tabellentypen

Die folgende Tabelle fasst die Unterschiede zwischen den drei Tabellentypen zusammen, insbesondere im Hinblick auf ihre Auswirkungen auf Time Travel und Fail-safe:

Typ

Persistenz

Klonen (Quelltyp => Zieltyp)

Aufbewahrungsfrist für Time Travel (Tage)

Fail-safe-Frist (Tage)

Temporär

Dauer der Sitzung

Temporär => Temporär . . Temporär => Transient

0 oder 1 (Standardwert ist 1)

0

Transient

Bis explizit gelöscht

Transient => Temporär . . Transient => Transient

0 oder 1 (Standardwert ist 1)

0

Permanent (Standard Edition)

Bis explizit gelöscht

Permanent => Temporär . . Permanent => Transient . . Permanent => Permanent

0 oder 1 (Standardwert ist 1)

7

Permanent (Enterprise Edition und höher)

Bis explizit gelöscht

Permanent => Temporär . . Permanent => Transient . . Permanent => Permanent

0 bis 90 (Standard ist konfigurierbar)

7

Hinweise zu Time Travel

  • Die Time Travel-Aufbewahrungsfrist einer Tabelle kann beim Erstellen der Tabelle oder zu einem beliebigen Zeitpunkt angegeben werden. Innerhalb der Aufbewahrungsfrist können alle Time Travel-Operation auf den Daten in der Tabelle (z. B. Abfragen) und auf der Tabelle selbst (z. B. Klonen und Wiederherstellen) ausgeführt werden.

  • Wenn die Time Travel-Aufbewahrungsfrist für eine permanente Tabelle auf 0 eingestellt ist, geht sie sofort in die Fail-safe-Periode über, wenn sie gelöscht wird.

  • Temporäre Tabellen können eine Time Travel-Aufbewahrungsfrist von 1 Tag haben. Eine temporäre Tabelle wird jedoch gelöscht, sobald die Sitzung (in der die Tabelle erstellt wurde) endet. Die tatsächliche Aufbewahrungsfrist beträgt also 24 Stunden oder den Rest der Sitzung, je nachdem, welcher Zeitraum kürzer ist.

  • Eine Time Travel-Abfrage mit langer Laufzeit verzögert das Bereinigen von temporären und transienten Tabellen, bis die Abfrage abgeschlossen ist.

Hinweise zu Fail-safe

  • Die Fail-safe-Frist ist bei keinem Tabellentyp konfigurierbar.

  • Transiente und temporäre Tabellen haben keine Fail-safe-Frist. Daher fallen nach der Time Travel-Aufbewahrungsfrist keine zusätzlichen Gebühren für die Datenspeicherung an.

Wichtig

Da transiente Tabellen keine Fail-safe-Periode haben, stellen sie eine gute Option für die Verwaltung der Kosten sehr großer Tabellen dar, die zum Speichern transienter Daten verwendet werden. Die Daten in diesen Tabellen können jedoch nach Ablauf der Time Travel-Aufbewahrungsfrist nicht mehr wiederhergestellt werden.

Wenn beispielsweise nach 1 Tag ein Systemfehler auftritt, bei dem eine transiente Tabelle gelöscht wird oder verloren geht, können die Daten weder von Ihnen noch von Snowflake wiederhergestellt werden. Daher empfehlen wir die Verwendung von transienten Tabellen nur für Daten, die nicht vor Ausfällen geschützt werden müssen, oder für Daten, die außerhalb von Snowflake wiederhergestellt werden können.

Weitere Informationen dazu finden Sie unter Hinweise zur Datenspeicherung.