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.
Wenn Datenflüsse in Senken schreiben, erfolgt jede benutzerdefinierte Partitionierung unmittelbar vor dem Schreiben. Wie die Quelle wird in den meisten Fällen empfohlen, die aktuelle Partitionierung als ausgewählte Partitionsoption zu verwenden. Partitionierte Daten schreiben viel schneller als nicht partitionierte Daten, sogar Ihr Ziel wird nicht partitioniert. Im Folgenden finden Sie die individuellen Überlegungen für verschiedene Senkentypen.
Azure SQL-Datenbank-Senken
Bei Azure SQL-Datenbank sollte die Standardpartitionierung in den meisten Fällen funktionieren. Es besteht die Möglichkeit, dass Ihre Daten-Senke möglicherweise mehr Partitionen hat, als Ihre SQL-Datenbank verarbeiten kann. Wenn Sie auf dieses Problem stoßen, verringern Sie die Anzahl der Partitionen, die Ihre SQL-Datenbanksenke ausgibt.
Beste Praktiken zum Löschen von Zeilen im Zieldatenspeicher basierend auf fehlenden Zeilen der Quelle
Im Folgenden sehen Sie ein Video, das zeigt, wie man Datenflüsse mit Exists-, Zeile-ändern- und Zieltransformationen verwendet, um dieses häufige Muster zu realisieren.
Auswirkungen der Fehlerzeilenbehandlung auf die Leistung
Wenn Sie die Fehlerzeilenbehandlung ("bei Fehler fortfahren") in der Sinktransformation aktivieren, führt der Dienst einen zusätzlichen Schritt aus, bevor die kompatiblen Zeilen in Ihre Zieltabelle geschrieben werden. Dieser zusätzliche Schritt hat eine kleine Leistungsstrafe, die etwa 5% betragen kann, mit einem zusätzlichen kleinen Leistungsverlust, wenn Sie die Option festlegen, auch die inkompatiblen Zeilen in eine Log-Datei zu schreiben.
Deaktivieren von Indizes mithilfe eines SQL-Skripts
Durch das Deaktivieren von Indizes vor dem Laden in einer SQL-Datenbank kann die Leistung des Schreibens in die Tabelle erheblich verbessert werden. Führen Sie den folgenden Befehl aus, bevor Sie in die SQL-Spüle schreiben.
ALTER INDEX ALL ON dbo.[Table Name] DISABLE
Nachdem der Schreibvorgang abgeschlossen wurde, erstellen Sie die Indizes mit dem folgenden Befehl neu:
ALTER INDEX ALL ON dbo.[Table Name] REBUILD
Diese Aufgaben können nativ durch die Ausführung von Pre- und Post-SQL-Skripten in einer Azure SQL-Datenbank oder einem Synapse-Ausgabe in Zuordnungsdatenflüssen durchgeführt werden.
Warnung
Wenn Indizes deaktiviert werden, übernimmt der Datenfluss effektiv die Kontrolle über eine Datenbank, und Abfragen sind zu diesem Zeitpunkt nicht erfolgreich. Daher werden viele ETL-Aufträge mitten in der Nacht ausgelöst, um diesen Konflikt zu vermeiden. Weitere Informationen finden Sie unter den Einschränkungen zum Deaktivieren von SQL-Indizes.
Skalieren der Datenbank
Planen Sie eine Größenänderung Ihrer Quelle, und senken Sie Azure SQL DB und DW, bevor Ihre Pipeline ausgeführt wird, um den Durchsatz zu erhöhen und die Azure-Drosselung zu minimieren, sobald Sie DTU-Grenzwerte erreicht haben. Nachdem die Pipelineausführung abgeschlossen ist, ändern Sie die Größe der Datenbanken wieder auf die normale Ausführungsrate.
Azure Synapse Analytics senken
Stellen Sie beim Schreiben in Azure Synapse Analytics sicher, dass " Staging aktivieren " auf "true" festgelegt ist. Dadurch kann der Dienst mithilfe des SQL COPY-Befehls schreiben, wodurch die Daten effektiv in Massen geladen werden. Sie müssen auf ein Azure Data Lake Storage Gen2- oder Azure Blob Storage-Konto verweisen, um die Daten für die Zwischenspeicherung vorzubereiten.
Abgesehen von Staging gelten die gleichen bewährten Methoden für Azure Synapse Analytics als Azure SQL-Datenbank.
Dateibasierte Senken
Während Datenflüsse verschiedene Dateitypen unterstützen, wird das Spark-native Parkettformat für optimale Lese- und Schreibzeiten empfohlen.
Wenn die Daten gleichmäßig verteilt werden, ist die aktuelle Partitionierung die schnellste Partitionierungsoption zum Schreiben von Dateien.
Dateinamenoptionen
Beim Schreiben von Dateien haben Sie eine Auswahl an Benennungsoptionen, die jeweils auswirkungen auf die Leistung haben.
Wenn Sie die Standardoption auswählen, wird am schnellsten geschrieben. Jede Partition entspricht einer Datei mit dem Spark-Standardnamen. Dies ist nützlich, wenn Sie einfach aus dem Ordner der Daten lesen.
Durch Festlegen eines Namensmusters wird jede Partitionsdatei in einen benutzerfreundlicheren Namen umbenannt. Dieser Vorgang erfolgt nach dem Schreiben und ist etwas langsamer als die Auswahl des Standardwerts.
Pro Partition können Sie jede einzelne Partition manuell benennen.
Wenn eine Spalte Ihrer gewünschten Daten-Ausgabe entspricht, können Sie Namensdatei als Spaltendaten verwenden. Dadurch werden die Daten neu angeordnet und können sich auf die Leistung auswirken, wenn die Spalten nicht gleichmäßig verteilt werden.
Wenn eine Spalte der Erstellung von Ordnernamen entspricht, wählen Sie "Name"-Ordner als Spaltendaten aus.
Ausgabe in einzelne Datei kombiniert alle Daten in einer einzigen Partition. Dies führt zu langen Schreibzeiten, insbesondere für große Datasets. Diese Option wird abgeraten, es sei denn, es gibt einen expliziten geschäftlichen Grund, sie zu verwenden.
Azure Cosmos DB Datensenken
Wenn Sie in Azure Cosmos DB schreiben, kann das Ändern des Durchsatzes und der Batchgröße während der Ausführung des Datenflusses die Leistung verbessern. Diese Änderungen werden nur während der Ausführung der Datenflussaktivität wirksam und kehren nach abschluss wieder zu den ursprünglichen Sammlungseinstellungen zurück.
Batchgröße: In der Regel reicht die Standardbatchgröße aus. Um diesen Wert weiter zu optimieren, berechnen Sie die grobe Objektgröße Ihrer Daten, und stellen Sie sicher, dass die Objektgröße * Batchgröße kleiner als 2 MB ist. Wenn dies der Grund ist, können Sie die Batchgröße erhöhen, um einen besseren Durchsatz zu erzielen.
Durchsatz: Legen Sie hier eine Einstellung für einen höheren Durchsatz fest, damit Dokumente schneller in Azure Cosmos DB schreiben können. Beachten Sie die höheren RU-Kosten basierend auf einer Einstellung mit hohem Durchsatz.
Schreiben des Durchsatzbudgets: Verwenden Sie einen Wert, der kleiner als die Gesamten RUs pro Minute ist. Wenn Sie über einen Datenfluss mit einer hohen Anzahl von Spark-Partitionen verfügen, ermöglicht das Festlegen eines Budgetdurchsatzes mehr Balance zwischen diesen Partitionen.
Verwandte Inhalte
- Übersicht über die Datenflussleistung
- Optimieren von Quellen
- Optimieren von Transformationen
- Verwenden von Datenflüssen in Pipelines
Weitere Artikel zum Datenfluss finden Sie in Bezug auf die Leistung: