Delta-Tabellen optimieren: Warum nur benötigte Spalten auswählen?

Bei der Arbeit mit großen Delta-Tabellen in Databricks oder Apache Spark spielt die Art der Abfrage eine entscheidende Rolle für die Performance. Viele Anwender verwenden aus Bequemlichkeit SELECT *, obwohl sie nur wenige Spalten benötigen.

Gerade bei sehr großen Tabellen kann dies zu unnötigen Lesevorgängen und längeren Ausführungszeiten führen.

Warum SELECT * oft langsamer ist

Wenn Sie alle Spalten einer Tabelle abrufen, muss Spark sämtliche relevanten Datenblöcke lesen. Enthält die Tabelle beispielsweise 100 Spalten, Ihre Analyse benötigt aber nur drei davon, werden dennoch deutlich mehr Daten verarbeitet als notwendig.

Beispiel:

SELECT *
FROM kunden;

Benötigen Sie lediglich den Kundennamen und die Stadt, ist folgende Variante effizienter:

SELECT kundenname, stadt
FROM kunden;

Column Pruning: Spark liest nur benötigte Spalten

Databricks und Apache Spark unterstützen das sogenannte Column Pruning. Dabei werden ausschließlich die tatsächlich verwendeten Spalten aus den Parquet-Dateien gelesen.

Vorteile:

  • Weniger Daten werden von der Festplatte gelesen.
  • Geringerer Speicherverbrauch.
  • Schnellere Abfragen.
  • Reduzierte Kosten bei Cloud-Workloads.

Besonders bei breit aufgebauten Tabellen mit vielen Attributen kann dies einen erheblichen Performancegewinn bringen.

Beispiel bei großen Delta-Tabellen

Angenommen, eine Delta-Tabelle enthält:

  • 150 Spalten
  • mehrere Milliarden Datensätze

Für ein Dashboard werden jedoch nur benötigt:

  • Umsatz
  • Datum
  • Produktgruppe

Dann sollte die Abfrage bewusst auf diese Spalten beschränkt werden:

SELECT umsatz, datum, produktgruppe
FROM verkauf_delta;

Spark liest dadurch nur die benötigten Daten und überspringt den Rest.

Weitere Optimierungsmöglichkeiten

Die Auswahl der benötigten Spalten lässt sich hervorragend mit weiteren Techniken kombinieren:

  • Partitionierung
  • Z-Ordering
  • Predicate Pushdown
  • Delta Cache
  • Photon Engine
  • OPTIMIZE-Befehl

Durch die Kombination dieser Maßnahmen lassen sich selbst sehr große Tabellen effizient abfragen.

Fazit

Ja, eine weitere wichtige Möglichkeit zur Optimierung von Abfragen besteht darin, nur die tatsächlich benötigten Spalten auszuwählen. Dank Column Pruning kann Databricks die Datenmenge erheblich reduzieren und Abfragen deutlich beschleunigen.

Vermeiden Sie daher nach Möglichkeit SELECT * und beschränken Sie Ihre Abfragen auf die wirklich benötigten Informationen.

Verwandte Artikel

▶️ Weitere Tutorials rund um Databricks, Azure und Datenanalyse finden Sie auf unserem YouTube-Kanal:
https://www.youtube.com/@datenanalyst

📈 Noch mehr Schritt-für-Schritt-Anleitungen finden Sie auf:
https://www.datenanalyst.com