Delta-Tabellen wiederherstellen

Mit Delta Lake können Sie den RESTORE Befehl verwenden, um einen älteren Tabellenzustand wieder aktuell zu machen. RESTORE Stellt eine Delta-Tabelle auf eine frühere Tabellenversion oder auf den Tabellenzustand zu einem bestimmten Zeitstempel zurück.

Verwenden Sie diese Einstellung RESTORE , wenn Sie schnell eine fehlerhafte Änderung wiederherstellen müssen, ohne die Tabelle manuell neu zu erstellen. Da Delta-Tabellen den Transaktionsverlauf beibehalten, können Sie häufig einen Rollback auf einen bekannten Zustand in einem einzigen Befehl ausführen.

Funktionsweise von RESTORE

RESTORE ändert den aktuellen Status einer Delta-Tabelle, sodass sie einer früheren zugesicherten Version entspricht.

Sie können eine Tabelle wiederherstellen, wenn Sie Folgendes benötigen:

  • Wiederherstellen von versehentlichen Löschungen oder Updates
  • Rückgängigmachen eines fehlerhaften MERGEVorgangs, Überschreibens oder Anfügens
  • Eine Schemaänderung rückgängig machen, die nachgelagerte Workloads beeinträchtigt
  • Sich von einer Beschädigung erholen, die durch einen fehlerhaften Schreib- oder Pipelineschritt verursacht wurde

Im Gegensatz zu einer schreibgeschützten historischen Abfrage verändert RESTORE den Zustand der Live-Tabelle, den neue Leser zu sehen bekommen.

Syntax

Verwenden Sie eines dieser Formulare, um eine Delta-Tabelle wiederherzustellen.

Auf eine bestimmte Version einer Delta-Tabelle wiederherstellen:

RESTORE TABLE schema_name.table_name TO VERSION AS OF 5

Wiederherstellen des Tabellenzustands zu einem bestimmten Zeitstempel:

RESTORE TABLE schema_name.table_name TO TIMESTAMP AS OF '2026-05-01 12:00:00'

Bevor Sie wiederherstellen, überprüfen Sie den Tabellenverlauf, damit Sie die richtige Version auswählen können:

DESCRIBE HISTORY schema_name.table_name

Ein allgemeiner Wiederherstellungsworkflow sieht wie folgt aus:

DESCRIBE HISTORY dbo.orders;
RESTORE TABLE dbo.orders TO VERSION AS OF 42

Die PySpark-Methoden DeltaTable führen den gleichen logischen Vorgang wie der SQL-Befehl RESTORE TABLE aus.

Was während der Wiederherstellung geschieht

Wenn Sie ausführen RESTORE, schreibt Delta Lake die Zielversion nicht neu. Stattdessen wird eine neue Version im Delta-Protokoll erstellt, die auf die mit der ausgewählten Version oder dem ausgewählten Zeitstempel verknüpften Datendateien verweist.

Dieses Verhalten hat einige wichtige Konsequenzen:

  • RESTORE erstellt eine neue aktuelle Version der Tabelle.
  • Die Dateien vom wiederhergestellten Punkt werden wieder aktiv.
  • Die Dateien aus dem aktuellen Zustand vor der Wiederherstellung werden nicht sofort gelöscht.
  • Diese nun nicht mehr referenzierten Dateien können später mit VACUUM bereinigt werden.
  • Die Wiederherstellung selbst wird als versionierte Tabellenänderung aufgezeichnet.

Da RESTORE versioniert ist, können Sie sie im Tabellenverlauf überprüfen:

DESCRIBE HISTORY schema_name.table_name

WIEDERHERSTELLUNG, Zeitreise und VAKUUM

RESTORE und Zeitreisen verwenden die gleiche Delta-Geschichte, aber sie lösen verschiedene Probleme.

  • Verwenden Sie Zeitreisen , wenn Sie nur ältere Daten lesen müssen, ohne den aktuellen Tabellenstatus zu ändern.
  • Verwenden Sie RESTORE, wenn der ältere Zustand für alle neuen Lese- und Schreibvorgänge zum aktuellen Status werden soll.

VACUUM wirkt sich auf die Wiederherstellung aus, da nicht referenzierte Dateien aus dem Speicher entfernt werden. Nach einer Wiederherstellung werden die Dateien aus dem zuvor aktuellen Zustand in der Regel nicht mehr referenziert. Wenn Sie sie nicht mehr benötigen, können Sie sie mit VACUUM bereinigen.

Umgekehrt ist es auch wichtig: VACUUM kann eine zukünftige Wiederherstellung verhindern. Wenn VACUUM die Dateien, die für die Version erforderlich sind, die Sie wiederherstellen möchten, bereits entfernt hat, schlägt RESTORE fehl, da der Tabellenverlauf keinen Zugriff mehr auf diese physischen Dateien hat.

Einschränkungen

RESTORE funktioniert nur, wenn die Zielversion weiterhin alle erforderlichen Datendateien zur Verfügung hat.

Beachten Sie die folgenden Grenzwerte:

  • Sie können nur Versionen wiederherstellen, deren Datendateien noch vorhanden sind.
  • Wenn VACUUM diese Dateien entfernt wurden, schlägt der Wiederherstellungsvorgang fehl.
  • Der Wiederherstellungsverlauf unterliegt den Delta-Aufbewahrungseinstellungen, einschließlich delta.logRetentionDurationund der tatsächlichen Aufbewahrung von Datendateien im Speicher.
  • In der Praxis wirken sich sowohl die Aufbewahrung von Transaktionsprotokollen als auch die Dateiaufbewahrung darauf aus, wie weit Sie wiederherstellen können.

Bewährte Methoden

Verwenden Sie diese Methoden, um Risiken zu reduzieren:

  • Führen Sie DESCRIBE HISTORY vor der Wiederherstellung aus, damit Sie die richtige Version oder den richtigen Zeitstempel überprüfen können.
  • Verwenden Sie Zuerst Zeitreiseabfragen, wenn Sie nur ältere Daten prüfen müssen und den aktuellen Tabellenzustand nicht ändern möchten.
  • Führen Sie VACUUM nach einer Wiederherstellung aus, wenn Sie nicht referenzierte Dateien aus dem Zustand vor der Wiederherstellung bereinigen möchten.
  • Teste zuerst den Wiederherstellungspfad in einer Klontabelle, wenn du mit kritischen Produktionsdaten arbeitest.