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
- Was passiert mit Z-Ordering, wenn neue Daten hinzugefügt werden?
- Wie kann man große Delta-Tabellen optimieren?
- Was ist Serverless Compute in Databricks?
▶️ 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
