In Delta Lake bzw. Databricks ist Z-Ordering kein dauerhafter Zustand, sondern eine Optimierung, die nur auf die Dateien angewendet wird, die zum Zeitpunkt der Ausführung vorhanden sind.
Wenn nach einem OPTIMIZE ... ZORDER BY (...) neue Daten in die Tabelle geschrieben werden, stellt sich häufig die Frage, ob die neuen Datensätze automatisch ebenfalls von dieser Optimierung profitieren.
Die Antwort lautet: Nein.
Bestehende Dateien bleiben optimiert
Nach der Ausführung von:
OPTIMIZE sales_data
ZORDER BY (customer_id);
werden die vorhandenen Dateien physisch neu angeordnet. Diese Optimierung bleibt bestehen.
Neue Daten werden nur angehängt
Werden später neue Daten geladen:
INSERT INTO sales_data
SELECT * FROM new_sales;
entstehen zusätzliche Dateien, die nicht automatisch z-orderiert werden.
Dadurch gilt:
- Bereits optimierte Dateien bleiben unverändert.
- Neue Dateien werden lediglich angehängt.
- Die Gesamtperformance kann mit der Zeit wieder sinken.
Warum ist das wichtig?
Z-Ordering verbessert vor allem das Data Skipping. Wenn immer mehr unoptimierte Dateien hinzukommen, müssen bei Abfragen wieder mehr Dateien gelesen werden.
Besonders bei:
- großen Delta-Tabellen,
- häufigen Datenladungen,
- täglichen oder stündlichen ETL-Prozessen
sollte die Tabelle regelmäßig neu optimiert werden.
Lösung: Z-Ordering erneut ausführen
OPTIMIZE sales_data
ZORDER BY (customer_id);
Dadurch werden auch die neu hinzugefügten Dateien wieder entsprechend organisiert.
Empfehlung
Bei Tabellen mit kontinuierlichem Wachstum sollte OPTIMIZE ZORDER BY als Bestandteil des Wartungsprozesses eingeplant werden. Viele Unternehmen führen diese Optimierung beispielsweise täglich oder wöchentlich aus.
Fazit
Neue Daten zerstören das bestehende Z-Ordering nicht, werden jedoch nicht automatisch mit einbezogen. Um dauerhaft von schnellen Abfragen zu profitieren, sollte das Z-Ordering regelmäßig erneut ausgeführt werden.
Weitere Artikel zum Thema Databricks
- Unterschied zwischen Copy Data und Datenfluss in Azure Synapse
- Was ist Serverless Compute in Databricks?
- Wie optimiert man große Delta-Tabellen?
- PyTest für ETL-Prozesse in Azure Synapse
- Was ist Z-Ordering?
🎥 Weitere Tutorials zu Databricks, Azure Synapse, Power BI und SQL finden Sie auch auf meinem YouTube-Kanal:

Schreibe einen Kommentar