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.
Dateien mit geeigneter Größe sind wichtig für die Abfrageleistung, ressourcenauslastung und Die Metadatenverwaltung. Kleinere Dateien erhöhen den Aufgabenaufwand und Metadatenoperationen, während größere Dateien die Parallelität nicht vollständig nutzen und E/A belasten können. Delta Lake verwendet Dateimetadaten zum Löschen von Partitionen und Zum Überspringen von Daten, sodass durch die Ausrichtung auf die richtige Dateigröße effiziente Lese-, Schreib- und Wartungsvorgänge sichergestellt werden.
Empfehlungen zur Dateigröße nach Verbrauchsszenario (SQL Analytics-Endpunkt, Power BI Direct Lake, Spark) finden Sie unter Wartung und Optimierung der übergreifenden Arbeitsauslastungstabelle.
In den folgenden Abschnitten werden die wichtigsten Features beschrieben, mit denen Sie die Dateigröße in Delta-Tabellen optimieren können.
Anpassbare Datenanordnungsvorgänge
Optimieren
Der OPTIMIZE Befehl schreibt kleine Dateien als größere Dateien um, um das Layout von Daten in Delta-Tabellen zu verbessern. Weitere Details einschließlich Optimierungsinformationen zur Dateigröße erhalten Sie in der OPTIMIZE-Befehlsdokumentation .
Automatische Komprimierung
Die automatische Komprimierung wertet die Partitionsintegrität nach jedem Schreibvorgang automatisch aus. Wenn eine übermäßige Dateifragmentierung (zu viele kleine Dateien) innerhalb einer Partition erkannt wird, löst sie einen synchronen OPTIMIZE Vorgang unmittelbar nach dem Commit des Schreibvorgangs aus. Dieser writer-gesteuerte Ansatz zur Dateiwartung ist im Allgemeinen optimal, da die Komprimierung nur ausgeführt wird, wenn programmgesteuert festgestellt wird, dass sie von Vorteil ist. Ausführliche Konfigurationsoptionen und zusätzliche Informationen finden Sie in der Dokumentation zur automatischen Komprimierung .
Optimieren des Schreibvorgangs
Durch die Optimierung des Schreibvorgangs wird der Aufwand für kleine Dateien reduziert, indem eine Vorschreibkomprimierung (Bin-Packung) durchgeführt wird, wodurch weniger, größere Dateien generiert werden. Mit diesem Ansatz werden speicherinterne Daten in optimal dimensionierte Container sortiert, bevor Spark die Parquet-Dateien schreibt, wodurch das Potenzial für die Generierung entsprechend angepasster Dateien maximiert wird, ohne dass sofort nach dem Schreiben Bereinigungsoperationen erforderlich sind.
Verwenden Sie die Optimierung des Schreibvorgangs selektiv. Das Shuffling kann in einigen Schreibpfaden unnötige Verarbeitungszeit verursachen. Das Optimieren von Schreibvorgängen ist besonders vorteilhaft, wenn Schreibvorgänge andernfalls viele kleine Dateien erstellen würden, die später eine Komprimierung erfordern.
Das Optimieren von Schreibvorgängen ist in der Regel von Vorteil für:
- Partitionierte Tabellen
- Tabellen mit häufigen kleinen Einfügungen
- Vorgänge, die wahrscheinlich viele Dateien berühren (
MERGE,UPDATEundDELETE)
Bei selektiver Anwendung auf bestimmten Tabellen deaktivieren Sie die Sitzungskonfiguration, und aktivieren Sie die Tabelleneigenschaft einzeln. Auf diese Weise kann jede Tabelle steuern, ob die Schreiboptimierung angewendet wird.
Optimierung für Schreiben deaktivieren
spark.conf.unset("spark.databricks.delta.optimizeWrite.enabled")Aktivieren in einer einzelnen Tabelle
ALTER TABLE dbo.table_name SET TBLPROPERTIES ('delta.autoOptimize.optimizeWrite' = 'true')
Um die Schreiboptimierung für Schreibvorgänge in alle partitionierten Tabellen in einer Spark-Sitzung zu aktivieren, stellen Sie sicher, dass die Sitzungskonfiguration nicht festgelegt ist, und legen Sie dann folgendes fest spark.microsoft.delta.optimizeWrite.partitioned.enabled:
Über die spark.databricks.delta.optimizeWrite.binSize Konfiguration kann die durch die Optimierung generierte Dateigröße angepasst werden.
Hinweis
Siehe Ressourcenprofile für die Standardoptimierung von Schreibeinstellungen nach Ressourcenprofil.
Zieldateigröße konsequent festlegen
Verwenden Sie die delta.targetFileSize Tabelleneigenschaft, um das Festlegen separater minimaler und maximaler Sitzungskonfigurationen für Dateigrößen bei der Optimierung, automatischen Komprimierung und Optimierung des Schreibvorgangs zu vermeiden. Diese Eigenschaft vereinheitlicht das Dateigrößenverhalten auf Tabellenebene. Geben Sie den Wert als Bytezeichenfolge an (zum Beispiel 1073741824b, 1048576k, 1024m, 1g). Bei Festlegung hat sie Vorrang vor Sitzungskonfigurationen und adaptiver Zieldateigröße.
ALTER TABLE dbo.table_name
SET TBLPROPERTIES ('delta.targetFileSize' = '256m')
Größe der adaptiven Zieldatei
Microsoft Fabric bietet adaptive Zieldateigröße, um die Komplexität im Zusammenhang mit der manuellen Optimierung der Zieldateigröße aller Tabellen in einer Sitzung oder einzelnen Tabellen über die delta.targetFileSize Table-Eigenschaft zu beseitigen. Die Größe der adaptiven Zieldatei verwendet Delta-Tabellen heuristiken wie z. B. die Tabellengröße, um die ideale Zieldatei zu schätzen und das Ziel automatisch zu aktualisieren, wenn sich die Bedingungen ändern, um eine optimale Leistung ohne manuelle Eingriffe oder Wartungsaufwand sicherzustellen.
Adaptive Zieldateigröße aktivieren
Hinweis
Microsoft empfiehlt zwar, die Sitzungskonfiguration für adaptive Zieldateigröße zu aktivieren, während sie zurzeit nicht standardmäßig aktiviert ist.
Aktivieren Sie die Größe der adaptiven Zieldatei für Tabellen, die in einer Spark-Sitzung erstellt oder geändert wurden, indem Sie die folgende Spark-Sitzungskonfiguration festlegen:
Verstehen des Auswertungsverhaltens
Wenn diese Option aktiviert ist, wird die Größe der adaptiven Zieldatei ausgewertet und in den folgenden Szenarien festgelegt:
-
CREATE TABLE AS SELECTundCREATE OR REPLACE TABLE AS SELECTOperationen - Überschreibt Schreibvorgänge (z. B.
DataFrame.write.mode("overwrite")oderINSERT OVERWRITE) - Schreibt beim Erstellen einer neuen Tabelle im
ErrorIfExists-,Append- oderIgnore-Modus. - Am Anfang des
OPTIMIZEBefehls
Nach der Festlegung wird die ideale Größe zu Beginn jedes OPTIMIZE Vorgangs erneut ausgewertet, um sicherzustellen, dass aktuelle Heuristiken die neueste Datenverteilung und Tabellenwachstum widerspiegeln. Durch diesen adaptiven Ansatz wird die Zieldatei im Laufe der Zeit automatisch aktualisiert, wodurch die Notwendigkeit für manuelle Anpassungen entfällt und die Abfrage- und Schreibleistung erhalten bleibt, während Ihre Daten wachsen. Wenn Sie eine bestimmte Größe sperren müssen, z. B. in Hyperoptimierungs- oder Testanwendungsfällen, können Sie die adaptive Einstellung außer Kraft setzen, indem Sie die benutzerdefinierte delta.targetFileSize Tabelleneigenschaft explizit festlegen.
Anpassen der Grenzen der adaptiven Dateigröße
Die Größe der adaptiven Zieldatei kann mithilfe der folgenden Spark-Sitzungskonfigurationen weiter konfiguriert werden:
| Eigentum | Description | Standardwert | Sitzungskonfiguration |
|---|---|---|---|
| minFileSize | Gibt die minimale Dateigröße (untere Grenze) als Bytezeichenfolge an, die bei der Auswertung von adaptiven Zieldateigrößen verwendet wird. Muss zwischen 128 MB und 1 GB betragen. | 128m | spark.microsoft.delta.targetFileSize.adaptive.minFileSize |
| maxFileSize | Gibt die maximale Dateigröße (obere Grenze) als Bytezeichenfolge an, die bei der Auswertung von adaptiven Zieldateigrößen verwendet wird. Muss zwischen 128 MB und 1 GB betragen. | 1024m | spark.microsoft.delta.targetFileSize.adaptive.maxFileSize |
| stopAtMaxSize | Wenn true aktiviert ist, werden weitere Größenauswertungen gestoppt, sobald die berechnete Zieldateigröße maxFileSize erreicht, was den Evaluierungsaufwand für sehr große Tabellen reduziert. |
Wahr | spark.microsoft.delta.targetFileSize.adaptive.stopAtMaxSize |
Hinweis
Bei stopAtMaxSize aktivierter (Standardeinstellung) bleibt die adaptive Zielgröße beim erreichenden Maximalwert fest, sodass zusätzliche Berechnungen vermieden werden. Wenn Ihre Tabellen nach dem Anwachsen möglicherweise verkleinert werden, legen Sie diese Eigenschaft auf false fest, damit die Neuberechnung unterhalb des maximalen Schwellenwerts zulässig ist.
Überprüfen der ausgewerteten Zielgröße
Sie können die evaluierte adaptive Zieldateigröße überprüfen, indem Sie Tabellendetails und Eigenschaften aus DESCRIBE DETAIL oder DESCRIBE EXTENDED prüfen. Der ausgewertete Wert wird als Bytezeichenfolge in der delta.targetFileSize.adaptive Tabelleneigenschaft geschrieben.
Dieser Wert wird als Zielgröße (oder max.) zum Optimieren, Automatischen Komprimieren und Optimieren des Schreibvorgangs verwendet. Der zugehörige Mindestwert wird als die Hälfte von delta.targetFileSize.adaptive berechnet.
Verstehen der Leistungsbeeinträchtigung
Das folgende Diagramm veranschaulicht die Beziehung zwischen der Tabellengröße und der optimalen Parquet-Datei-Größe. Bei Tabellen unter 10 GB wertet die Fabric Spark Runtime die Zieldateigröße auf 128 MB aus. Wenn die Tabellengröße wächst, wird die Zieldatei linear skaliert und erreicht bis zu 1 GB für Tabellen, die 10 TB überschreiten.
Indem man mit 128 MB anfängt und die Größe der Parquet-Dateien dann skaliert, wenn eine Tabelle größer wird, hat vielfältige Vorteile:
Verbessertes Überspringen von Delta-Dateien: Dateien mit richtiger Größe unterstützen optimale Datenclustering und Überspringen, sodass das Protokoll zum Überspringen von Delta-Dateien während der Abfrageausführung irrelevantere Dateien beseitigen kann. Eine Tabelle mit Dateien von 128 MB statt 1 GB ermöglicht das achtfache Überspringen von Dateien.
Reduzierte Updatekosten:
MERGEundUPDATEVorgänge schreiben nur betroffene Dateien neu. Dateien mit der rechten Größe minimieren die Anzahl der pro Vorgang berührten Dateien, wodurch die Menge der neu geschriebenen Daten reduziert wird. Mit aktivierten Löschvektoren wird die ordnungsgemäße Dateigröße kritisch: Tombstones auf Zeilenebene in überdimensionierten Dateien führen zu erheblichen Bereinigungskosten bei Komprimierungs- oder Bereinigungsvorgängen.Optimierte Parallelität: Dateien mit der richtigen Größe ermöglichen Spark, eine ideale Task-Parallelität zu erzielen. Zu viele kleine Dateien überwältigen den Zeitplan; zu wenige große Dateien unterlasten Ihren Spark-Pool. Optimale Größenanpassung maximiert den Lese- und Schreibdurchsatz.
Die Größe der adaptiven Zieldatei kann die Komprimierungsleistung und die Abfrage-/Schreiblatenz verbessern, wenn sie eine bessere Größe als die Standardkonfiguration auswählt. Wenn die adaptive Auswertung dieselbe Größe wie die Standardkonfiguration der Spark-Sitzung erzeugt, wird keine messbare Verbesserung erwartet.
Von Bedeutung
Die Schreibverstärkung tritt auf, wenn zuvor verdichtete Dateien umgeschrieben werden, weil die Zieldateigröße mit der Zeit ansteigt. Um dieses Risiko zu verringern, aktivieren Sie die Komprimierungsziele auf Dateiebene (spark.microsoft.delta.optimize.fileLevelTarget.enabled=true). Diese Einstellung trägt dazu bei, frühere Komprimierungsarbeiten beizubehalten, indem unnötige Neukompilierung von Dateien übersprungen wird, die bereits unter früheren Zielgrößen komprimiert wurden. Weitere Informationen finden Sie unter Komprimierungsziele auf Dateiebene.
Zusammenfassung der bewährten Methoden
Verwenden Sie diese Empfehlungen, um Schreibkosten, Leseleistung und Wartungsaufwand auszugleichen, wenn Tabellen wachsen.
- Automatische Verdichtung aktivieren für Datenaufnahme-Pipelines mit häufigen, kleinen Schreibvorgängen (Streaming oder Mikrobatching), damit die Dateigesundheit ohne manuelle Zeitplanung beibehalten wird.
- Verwenden Sie die automatische Komprimierung selektiv für andere Schreibmuster , wenn Ihre Ziele auf Dienstebene gelegentlich Schreiblatenzspitzen tolerieren können.
- Aktivieren Sie die adaptive Zieldateigröße, um die manuelle Optimierung zu reduzieren und die Zielgrößen mit dem Tabellenwachstum auszurichten.
- Verwenden Sie optimize write in kontrollierten Aufnahmepfaden (Batchaufträge, die Shuffle-, partitionierte Schreibvorgänge oder häufige kleine Schreibvorgänge tolerieren können), um den nachgeschalteten Komprimierungsdruck zu reduzieren.
-
Planen Sie die vollständige Tabelle
OPTIMIZEwährend ruhiger Fenster , wenn Sie viele Partitionen neu schreiben oder Z-Order anwenden müssen. -
Aktivieren Sie die schnelle Optimierung, um die Schreibverstärkung zu reduzieren und
OPTIMIZEidempotenter zu machen. Schnelle Optimierung anzeigen. -
Verwenden Sie
delta.targetFileSizeoder konsistente adaptive Zieldateigröße, damit Optimierung, automatische Komprimierung und Optimierung von Schreibvorgängen kompatible Dateigrößenziele erreichen. - Aktivieren Sie die Komprimierungsziele auf Dateiebene , um unnötige Neukompilierung zu reduzieren, da die Zieldateigrößen im Laufe der Zeit steigen.