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.
Langsame Abfragen und hohe Rechenkosten entstehen meist aus wenigen Grundursachen: mehr Daten zu lesen, als eine Abfrage benötigt, Daten zwischen Knoten zu mischen, einen schlechten Abfrageplan auszuwählen oder Dateien umzuschreiben, die sich nicht geändert haben. Azure Databricks adressiert viele dieser Ursachen automatisch bei Arbeitslasten, die von großflächiger ETL-Verarbeitung bis hin zu Ad-hoc-, interaktiven Abfragen reichen. Andere Optimierungen wirken nur, wenn du sie einschaltest oder sie auf eine bestimmte Arbeitslast abstimmst.
Diese Seite beginnt mit Empfehlungen für die meisten Workloads, gruppiert dann die Optimierungen danach, ob sie automatisch ausgeführt werden oder eine Konfiguration erfordern, und beschreibt das Problem, das jede einzelne löst. Die meisten Databricks-Laufzeitoptimierungen erfordern Delta Lake, das Standardformat für Tabellen in Azure Databricks.
Beginnen Sie mit diesen Empfehlungen
Diese Entscheidungen bringen die größten Leistungssteigerungen für die meisten Workloads. Sie helfen auch, dass viele der automatischen Optimierungen auf dieser Seite voll funktionieren.
-
Verwenden Sie Liquid Clustering für das Tabellenlayout.Liquid Clustering ersetzt die Tabellenpartitionierung und
ZORDER. Es ordnet die Daten nach den Spalten, nach denen Sie häufig filtern, was Data Skipping und das dynamische Dateibeschneiden verbessert. - Verwenden Sie verwaltete Tabellen im Unity Catalog.Prädiktive Optimierung verwaltet verwaltete Tabellen automatisch. Siehe verwaltete Tabellen des Unity-Katalogs für Delta Lake und Apache Iceberg.
- Verwenden Sie Photon-fähige Compute-Ressourcen. Predictive I/O erfordert Photon, ebenso wie dynamisches Datei-Pruning in
MERGE,UPDATE, undDELETEAnweisungen. Siehe Was ist Photon?. - Löschvektoren aktivieren. Predictive I/O verwendet Löschvektoren, um das Umschreiben ganzer Dateien während Updates, Löschungen und Zusammenführungen zu vermeiden, und die Nebenläufigkeit auf Zeilenebene erfordert diese. Für Delta-Lake-Tabellen müssen Sie Löschvektoren explizit aktivieren. Siehe Löschungsvektoren in Databricks.
- Verwenden Sie die neueste Databricks Runtime-Version. Neue Versionen enthalten die neuesten Leistungsverbesserungen. Einige Optimierungen erfordern eine minimale Databricks Runtime-Version oder Photon-fähiges Compute. Siehe auf jeder Seite die Anforderungen.
Automatische Optimierungen
Diese Optimierungen sind standardmäßig aktiviert. Sie müssen sie nicht aktivieren, aber einige bringen mehr Nutzen, wenn Ihre Tabellen und Compute bestimmte Bedingungen erfüllen, wie zum Beispiel die Nutzung von Photon oder das Aktualisieren der Tabellenstatistik.
- Festplatten-Caching: Beschleunigt Abfragen, die immer wieder dieselben entfernten Parquet- und Delta Lake-Datendateien lesen. Azure Databricks speichert Kopien der Dateien auf dem lokalen Speicher der Rechenknoten, sodass spätere Lesezugriffe lokal ausgeführt werden. Azure Databricks aktiviert es automatisch bei Worker-Instanztypen, die es unterstützen.
-
Dynamisches Datei-Pruning: Überspringt Dateien, die keine passenden Zeilen in Joins in Delta-Lake-Tabellen enthalten können.
MERGE,UPDATEundDELETEStatements erfordern Photon-fähige Berechnung für dynamische Dateibereinigung. -
Low Shuffle Merge: Beschleunigt
MERGEVorgänge, die in jeder Datei einige Zeilen aktualisieren oder löschen. Low Shuffle Merge verarbeitet unveränderte Zeilen ohne Shuffle und bewahrt deren bestehendes Datenlayout. - Adaptive Abfrageausführung: Optimiert Abfragepläne während der Ausführung der Abfragen, basierend auf der tatsächlichen Datengröße. Das behebt langsame Join-Strategien, zu viele kleine Tasks und ungleich verteilte Tasks, die durch ungenaue Schätzungen entstehen.
- Predictive I/O: Beschleunigt Datenscans und reduziert die Daten, die bei Aktualisierungen, Löschungen und Zusammenführungen auf Photon-fähiger Rechenleistung neu geschrieben werden.
- Kostenbasierter Optimierer: Verwendet Tabellen- und Spaltenstatistiken, um effiziente Abfragepläne auszuwählen, insbesondere für Abfragen mit mehreren Joins. Der kostenbasierte Optimierer hängt von Statistiken ab, also sammeln Sie diese und halten Sie sie auf dem neuesten Stand.
-
Prädiktive Optimierung: Führt
OPTIMIZE,VACUUMundANALYZEauf von Unity Catalog verwalteten Tabellen automatisch aus, sodass Sie keine Tabellenpflege planen müssen. Es hält auch die Statistiken, die der kostenbasierte Optimierer verwendet, aktuell. Um zu überprüfen, ob es für Ihr Konto aktiviert ist, lesen Sie Überprüfen, ob prädiktive Optimierung aktiviert ist.
Optimierungen, die du konfigurierst
Diese Optimierungen erfordern, dass du sie einschaltest, abstimmst oder die Tabellenkonfiguration änderst. Nutze sie, wenn für einen Workload ein Verhalten erforderlich ist, das die Standardwerte nicht abdecken.
- Archivunterstützung: Verwenden Sie, wenn Cloud-Lebenszyklusrichtlinien ältere Tabellendateien auf Archivspeicherebenen verschieben, um Speicherkosten zu senken. Archivunterstützung weist Azure Databricks an, Dateien zu ignorieren, die älter sind als ein festgelegter Zeitraum, damit die Lebenszyklusrichtlinie keine Abfragen unterbricht, die nur aktuelle Daten lesen. Dieses Feature befindet sich in der Public Preview.
- Range Join: Verwenden Sie, wenn Joins eine Punkt-in-Intervall- oder Intervallüberlappungsbedingung verwenden. Databricks SQL optimiert automatisch Bereichsjoins. Auf anderen Compute-Ressourcen optimieren Sie Range-Joins mit Join-Hinweisen oder der Sitzungskonfiguration.
- Isolationsebenen und Schreibkonflikte: Verwenden Sie diese Option, wenn gleichzeitige Schreibvorgänge in dieselbe Tabelle kollidieren oder wenn eine Arbeitslast strengere Garantien als das Standard-WriteSerializable-Isolationsniveau benötigt. Serialisierbare Isolation reduziert den Durchsatz bei gleichzeitigen Schreibvorgängen. Die Nebenläufigkeit auf Zeilenebene löst automatisch viele Konflikte zwischen gleichzeitigen Schreibvorgängen auf Tabellen, die deren Anforderungen erfüllen.
-
Volltext-Suchindizes: Verwenden, wenn Abfragen Textspalten nach Teilzeichenketten oder Wörtern mit den Funktionen
isearchodersearchdurchsuchen. Der Index überspringt Dateien, die keine passenden Zeilen enthalten können. Dieses Feature befindet sich in der Betaversion.
Hinweis
Bloom-Filter-Indizes sind eine veraltete Data-Skipping-Funktion. Sie haben zusätzlichen Schreibaufwand und sind schwer zu optimieren. Wenn Ihre Tabellen welche haben, siehe Bloom-Filter-Indizes (veraltet), um sie zu ersetzen und zu entfernen.
Weitere Leistungsmerkmale
- Funktionen höherer Ordnung verfügen über integrierte, optimierte Leistung für viele Operationen, die keine gängigen Spark-Operatoren haben. Funktionen höherer Ordnung schneiden besser ab als benutzerdefinierte Funktionen.
- Azure Databricks verfügt über integrierte Operatoren und spezielle Syntax für die Arbeit mit komplexen Datentypen, einschließlich Arrays, Structs und JSON-Strings.
- Spark SQL fragt JSON-Strings ab, ohne sie vorher zu parsen.
- Um die Größe der Datendateien zu steuern, die durch Schreibvorgänge erzeugt werden, siehe Dateigröße kontrollieren.
- Für Hinweise zu Tabellendesign und -wartung siehe Best Practices: Delta Lake.
Diagnostiziere langsame oder teure Workloads
Wenn eine Arbeitslast langsamer oder teurer ist als erwartet und du nicht weißt, warum, nutze die Spark-Benutzeroberfläche, um den Engpass zu finden, bevor du die Konfiguration änderst. Weitere Informationen unter Diagnose: Kosten- und Leistungsprobleme mit der Spark-Benutzeroberfläche diagnostizieren.