Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Verwenden Sie den REORG Befehl, wenn Sie einen Teil einer Delta-Tabelle für ein bestimmtes Wartungsziel neu schreiben müssen. In Fabric wird REORG das physische Layout einer Tabelle neu organisiert, indem Datendateien umgeschrieben oder Tabellenmetadaten aktualisiert werden, je nachdem, welche Option Sie auswählen.
REORG unterscheidet sich von der Routinedateikomprimierung. Sie zielt auf Szenarien ab, z. B. das physische Entfernen von Zeilen, die von Löschvektoren als gelöscht markiert wurden.
Was REORG tut
REORG TABLE Schreibt den Tabellenstatus für einen definierten Wartungsvorgang neu.
-
APPLY (PURGE)schreibt betroffene Datendateien neu, sodass Zeilen, die durch Löschvektoren logisch gelöscht wurden, physisch aus den zugrunde liegenden Parquet-Dateien entfernt werden.
Verwenden Sie diese Methode REORG , wenn Sie ein bestimmtes Rewrite-Ergebnis benötigen, nicht nur kleinere oder weniger Dateien.
Verwenden Sie PURGE, um als gelöscht markierte Zeilen physisch zu entfernen
Mit Löschvektoren können Delta Lake Zeilen sofort als gelöscht markieren, ohne die ursprünglichen Parkettdateien sofort neu zu schreiben. Dieses Verhalten behält Löschvorgänge effizient bei, aber die gelöschten Zeilendaten sind weiterhin in den physischen Dateien vorhanden, bis Sie sie neu schreiben.
Wenn Sie REORG TABLE ... APPLY (PURGE) ausführen, schreibt Fabric die betroffenen Dateien neu und entfernt die vorläufig gelöschten Zeilen aus den aktiven Parkettdateien. Nachdem PURGE abgeschlossen ist, sind diese gelöschten Zeilen tatsächlich aus den neu geschriebenen Dateien verschwunden.
Note
PURGE ist in der Regel nicht als separater Wartungsschritt erforderlich.
OPTIMIZE Löscht Dateien automatisch, bei denen mehr als 5% datensätze durch Löschvektoren während der Komprimierung referenziert werden. Reservieren Sie PURGE für Szenarien, in denen Sie explizite Kontrolle darüber benötigen, wann vorläufig gelöschte Zeilen physisch entfernt werden.
Diese Option ist nützlich, wenn:
- Sie haben Compliance-Anforderungen und müssen gelöschte Daten nach einem bestimmten Zeitplan physisch entfernt werden.
- Sie möchten das Löschen von Dateien erzwingen, die unter den verwendeten Schwellenwert
OPTIMIZEvon 5% fallen.
Löschte Daten dauerhaft entfernen
Der REORG TABLE ... APPLY (PURGE) Befehl schreibt die aktiven Datendateien neu, aber die ersetzten Dateien bleiben in OneLake als unreferenzierte Dateien, bis VACUUM sie entfernt werden. Da Benutzer weiterhin time travel oder restore verwenden können, um auf die gelöschten Datensätze zuzugreifen, führen Sie zum dauerhaften Entfernen der gelöschten Daten nach PURGEVACUUM aus.
Standardmäßig speichert VACUUM nicht referenzierte Dateien sieben Tage lang. Wenn Sie die Dateien sofort entfernen müssen, deaktivieren Sie vorübergehend die Sicherheitsprüfung für die Aufbewahrungsdauer der aktuellen Spark-Sitzung, führen Sie VACUUM mit einer Aufbewahrungsdauer von null Stunden aus und aktivieren Sie die Sicherheitsprüfung dann wieder.
Warning
Bei einer Aufbewahrung mit null Stunden werden alle nicht referenzierten Dateien sofort dauerhaft gelöscht. Es kann gleichzeitige Leser oder Autoren stören und verhindert Zeitreisen zu Tabellenversionen, die von diesen Dateien abhängen. Vergewissern Sie sich, dass keine gleichzeitigen Vorgänge die Tabelle verwenden, bevor Sie fortfahren.
Führen Sie die Befehle in dieser Reihenfolge aus:
REORG TABLE schema_name.table_name APPLY (PURGE);
SET spark.databricks.delta.retentionDurationCheck.enabled = false;
VACUUM schema_name.table_name RETAIN 0 HOURS;
SET spark.databricks.delta.retentionDurationCheck.enabled = true;
Die Konfigurationsänderung gilt nur für die aktuelle Spark-Sitzung. Aktivieren Sie die Sicherheitsprüfung immer wieder nach der sofortigen Reinigung. Wenn keine sofortige Entfernung erforderlich ist, lassen Sie die Sicherheitsprüfung aktiviert und führen Sie sie nach der vorgeschriebenen Aufbewahrungszeit durch.VACUUM
Weitere Informationen zur Retention und deren Auswirkungen auf die Zeitreise finden Sie unter VACUUM Delta-Tabellen.
Überprüfen der Syntax
Verwenden Sie die folgenden Beispiele in einem Fabric Notizbuch.
Löschen vorläufig gelöschter Zeilen aus einer Tabelle
Löschen vorläufig gelöschter Zeilen nur für übereinstimmende Daten
Verwenden Sie eine WHERE Klausel, wenn Sie bestimmte Partitionen oder ein kleineres Datensegment als Ziel festlegen möchten.
Wählen Sie REORG oder OPTIMIEREN aus.
REORG und OPTIMIZE lösen unterschiedliche Probleme.
-
OPTIMIZEführt die Bin-Komprimierung durch. Es konsolidiert kleine Dateien in größere Dateien, um die Scaneffizienz zu verbessern. -
REORG ... APPLY (PURGE)entfernt physisch Zeilen, die von Löschvektoren als gelöscht markiert wurden.
Sie können beide Befehle zusammen verwenden. Sie könnten beispielsweise REORG ... APPLY (PURGE) ausführen, um gelöschte Daten physisch zu entfernen, und dann OPTIMIZE ausführen, um die Dateianordnung zu verbessern.
Grundlegendes zu Löschvektoren
Löschvektoren sind Metadatenstrukturen, die Zeilen als gelöscht markieren, ohne die Parkettdateien, die diese Zeilen enthalten, sofort neu zu schreiben. Leser berücksichtigen die Löschvektoren, sodass die gelöschten Zeilen nicht in Abfrageergebnissen angezeigt werden, aber die Bytes bleiben weiterhin im Speicher, bis ein Umschreiben erfolgt.
REORG ... APPLY (PURGE) ist der Schritt, der diese Zeilen physisch aus den neu geschriebenen Parquet-Dateien entfernt.
REORG in Fabric ausführen
Führen Sie REORG in Fabric aus Spark-basierten Umgebungen aus, z. B.:
- Fabric-Notizbücher
- Spark-Auftragsdefinitionen
Führen Sie REORG nicht über den SQL-Analyseendpunkt aus.
REORG ist ein Spark SQL-Wartungsbefehl für Delta-Tabellen.
Bewährte Methoden befolgen
- Führen Sie
PURGEnur aus, wenn Sie einen konkreten Bedarf haben, zum Beispiel Compliance-Anforderungen.OPTIMIZElöscht automatisch Dateien, bei denen mehr als 5 % der Datensätze von Löschvektoren referenziert werden, sodass eine Routinewartung in der Regel keinen separatenPURGE-Schritt erfordert. - Folgen Sie dem Compliance-Cleanup-Workflow, wenn gelöschte Daten dauerhaft aus OneLake entfernt werden müssen.
- Verwenden Sie
WHEREPrädikate, um bestimmte Partitionen als Ziel festzulegen, wenn Sie die vollständige Tabelle nicht neu schreiben müssen. - Verwenden Sie
UPGRADE UNIFORM, wenn Sie Iceberg-Reader benötigen, berücksichtigen Sie jedoch die zusätzlichen Metadaten, die UniForm verwaltet. - Behandeln
REORGundOPTIMIZEals ergänzende Wartungsvorgänge, nicht austauschbar.