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.
Gilt für:SQL Server
SSIS Integration Runtime in Azure Data Factory
Dieses Thema bietet Vorschläge, wie Integration Services -Pakete entworfen werden müssen, damit allgemeine Leistungsprobleme vermieden werden. Dieses Thema enthält zudem Informationen zu Funktionen und Tools, die Sie verwenden können, um Leistungsprobleme von Paketen zu beheben.
Konfigurieren des Datenflusses
Wenn Sie den Datenflusstask für eine bessere Leistung konfigurieren möchten, können Sie die Eigenschaften des Tasks konfigurieren, die Puffergröße anpassen und das Paket für die parallele Ausführung konfigurieren.
Konfigurieren der Eigenschaften des Datenflusstasks
Hinweis
Die in diesem Abschnitt behandelten Eigenschaften müssen für jeden Datenflusstask in einem Paket einzeln festgelegt werden.
Sie können die folgenden leistungsbeeinflussenden Eigenschaften des Datenflusstasks konfigurieren:
Geben Sie den Speicherort für die temporäre Speicherung von Pufferdaten (BufferTempStoragePath-Eigenschaft) sowie von Spalten an, die BLOB-Daten (Binary Large Object) (BLOBTempStoragePath-Eigenschaft) enthalten. Standardmäßig enthalten diese Eigenschaften die Werte der Umgebungsvariablen TEMP und TMP. Sie können andere Ordner auf einem anderen oder schnelleren Festplattenlaufwerk zum Speichern der temporären Dateien angeben oder die Dateien auf mehrere Laufwerke verteilt speichern. Sie können mehrere Verzeichnisse angeben, indem Sie die Verzeichnisnamen durch Semikolons voneinander trennen.
Definieren Sie die Standardgröße des Puffers, den der Task verwendet, mithilfe der DefaultBufferSize-Eigenschaft und die maximale Anzahl von Zeilen im Puffer mithilfe der DefaultBufferMaxRows-Eigenschaft. Legen Sie die Eigenschaft „AutoAdjustBufferSize“ fest, um anzugeben, ob die Standardgröße des Puffers automatisch aus dem Wert der DefaultBufferMaxRows-Eigenschaft berechnet wird. Die Standardpuffergröße beträgt 10 Megabytes, die maximale Puffergröße 2^31-1 Bytes. Der Standardwert für die maximale Anzahl von Zeilen beträgt 10.000.
Legen Sie über die EngineThreads-Eigenschaft die Anzahl von Threads fest, die der Task während der Ausführung verwenden kann. Die Eigenschaft liefert der Datenfluss-Engine einen Vorschlag für die Anzahl der zu verwendenden Threads. Der Standardwert ist 10 mit einem Mindestwert von 3. Unabhängig von dem für diese Eigenschaft festgelegten Wert verwendet die Engine jedoch nie mehr Threads als notwendig. Die Engine verwendet bei Bedarf auch mehr Threads, als in der Eigenschaft angegeben, um Parallelitätsprobleme zu vermeiden.
Geben Sie an, ob der Datenflusstask im optimierten Modus ausgeführt werden soll (RunInOptimizedMode-Eigenschaft). Der optimierte Modus verbessert die Leistung, indem nicht verwendete Spalten, Ausgaben und Komponenten aus dem Datenfluss entfernt werden.
Hinweis
Die gleichnamige Eigenschaft RunInOptimizedMode kann in SQL Server Data Tools (SSDT) auf Projektebene festgelegt werden, um anzugeben, dass der Datenflusstask beim Debuggen im optimierten Modus ausgeführt werden soll. Diese Projekteigenschaft überschreibt beim Entwurf die RunInOptimizedMode-Eigenschaft von Datenfluss-Tasks.
Puffergrößen anpassen
Zum Anpassen der Puffergrößen schätzt die Datenfluss-Engine zuerst die Größe einer einzelnen Datenzeile. Dann multipliziert es die Größe der Zeile mit dem Wert von DefaultBufferMaxRows, um einen vorläufigen Arbeitswert für die Puffergröße zu erhalten.
Wenn AutoAdjustBufferSize auf TRUE festgelegt ist, verwendet die Datenfluss-Engine den berechneten Wert als Puffergröße und der Wert von DefaultBufferSize wird ignoriert.
Wenn AutoAdjustBufferSize auf FALSE festgelegt ist, bestimmt die Datenfluss-Engine die Puffergröße anhand der folgenden Regeln.
Wenn das Ergebnis größer ist als der Wert von DefaultBufferSize, verringert die Engine die Anzahl der Zeilen.
Wenn das Ergebnis kleiner ist als die intern berechnete minimale Puffergröße, vergrößert die Engine die Anzahl der Zeilen.
Wenn das Ergebnis zwischen der Mindestpuffergröße und dem Wert von DefaultBufferSize liegt, legt die Engine die Puffergröße so nahe wie möglich an der geschätzten Zeilengröße multipliziert mit dem Wert von DefaultBufferMaxRows fest.
Verwenden Sie beim Testen der Leistung Ihrer Datenflusstasks zu Anfang die Standardwerte für DefaultBufferSize und DefaultBufferMaxRows. Aktivieren Sie die Protokollierung für den Datenflusstask, und wählen Sie das BufferSizeTuning-Ereignis aus, um festzustellen, wie viele Zeilen jeder Puffer enthält.
Bevor Sie mit dem Anpassen der Puffergrößenanpassung beginnen, sollten Sie die Größe jeder Datenspalte verringern, indem Sie nicht benötigte Spalten entfernen und die Datentypen entsprechend konfigurieren. Dies ist die wichtigste Verbesserungsmöglichkeit, die Sie vornehmen können.
Um die optimale Anzahl der Puffer und ihre Größe zu bestimmen, experimentieren Sie mit den Werten von DefaultBufferSize und DefaultBufferMaxRows, während Sie die Leistung und die vom BufferSizeTuning-Ereignis gemeldeten Informationen überwachen.
Erhöhen Sie die Puffergröße nicht so weit, dass die Auslagerung auf die Festplatte beginnt. Das Auslagern auf den Datenträger beeinträchtigt die Leistung stärker als eine nicht optimal eingestellte Puffergröße. Um festzustellen, ob Paging auftritt, überwachen Sie den Leistungsindikator „Gespoolte Puffer“ im Snap-In „Leistung“ der Microsoft Management Console (MMC).
Konfigurieren des Pakets zur parallelen Ausführung
Die parallele Ausführung verbessert die Leistung auf Computern, die über mehrere physische oder logische Prozessoren verfügen. Um die parallele Ausführung verschiedener Tasks im Paket zu unterstützen, verwendet Integration Services zwei Eigenschaften: MaxConcurrentExecutables und EngineThreads.
Die MaxConcurrentExecutables-Eigenschaft
Die MaxConcurrentExecutables -Eigenschaft ist eine Eigenschaft des Pakets selbst. Diese Eigenschaft definiert, wie viele Tasks gleichzeitig ausgeführt werden können. Der Standardwert ist -1, das bedeutet die Anzahl der physischen oder logischen Prozessoren plus 2.
Stellen Sie sich ein Beispielpaket mit drei Datenflusstasks vor, um zu verstehen, wie diese Eigenschaft funktioniert. Wenn Sie MaxConcurrentExecutables auf 3 festlegen, können alle drei Datenflusstasks gleichzeitig ausgeführt werden. Nehmen wir jedoch an, dass jeder Datenfluss-Task 10 Quell-zu-Ziel-Ausführungsbäume aufweist. Wenn Sie MaxConcurrentExecutables auf 3 festlegen, wird nicht sichergestellt, dass die Ausführungsstrukturen innerhalb jedes Datenflusstasks parallel ausgeführt werden.
Die EngineThreads-Eigenschaft
Die EngineThreads -Eigenschaft ist eine Eigenschaft, die jeder Datenflusstask besitzt. Diese Eigenschaft definiert, wie viele Threads die Datenfluss-Engine erstellen und parallel ausführen kann. Die EngineThreads -Eigenschaft ist gleichermaßen für die Quellthreads, die das Datenflussmodul für Quellen erstellt, und für die Arbeitsthreads, die das Modul für Transformationen und Ziele erstellt, anwendbar. Durch das Festlegen von EngineThreads auf 10 kann das Modul bis zu zehn Quellthreads und bis zu zehn Arbeitsthreads erstellen.
Stellen Sie sich das Beispielpaket mit drei Datenflusstasks vor, um zu verstehen, wie diese Eigenschaft funktioniert. Jede Datenflussaufgabe enthält zehn Ausführungsbäume von der Quelle zum Ziel. Wenn Sie EngineThreads in jedem Datenfluss-Task auf 10 festlegen, können potenziell alle 30 Ausführungsbäume gleichzeitig ausgeführt werden.
Hinweis
Eine Erläuterung von Threading würde den Rahmen dieses Themas sprengen. Als allgemeine Regel gilt jedoch, dass nie mehr Threads parallel ausgeführt werden sollten, als Prozessoren verfügbar sind. Wenn mehr Threads ausgeführt werden, als Prozessoren zur Verfügung stehen, kann dies durch häufige Kontextwechsel zwischen den Threads die Leistung beeinträchtigen.
Konfigurieren von einzelnen Datenflusskomponenten
Es gibt einige allgemeine Richtlinien, die Sie befolgen können, um die Leistung einzelner Datenflusskomponenten durch Konfiguration zu erhöhen. Es gibt auch spezielle Richtlinien für jeden Typ von Datenflusskomponente: Quelle, Transformation und Ziel.
Allgemeine Richtlinien
Es gibt zwei allgemeine Richtlinien, die von der Datenflusskomponente unabhängig sind, die Sie befolgen sollten, um die Leistung zu erhöhen: Optimieren Sie Abfragen, und vermeiden Sie unnötige Zeichenfolgen.
Optimieren von Abfragen
Zahlreiche Datenflusskomponenten verwenden Abfragen beim Extrahieren von Daten aus Quellen oder bei Suchvorgängen zum Erstellen von Verweistabellen. Die Standardabfrage verwendet die Syntax SELECT * FROM <Tabellenname>. Bei diesem Abfragetyp werden alle Spalten in der Quelltabelle zurückgegeben. Wenn alle Spalten zur Entwurfszeit zur Verfügung stehen, ist es möglich, eine beliebige Spalte als Such-, Pass-Through- oder Quellspalte auszuwählen. Nachdem Sie die zu verwendenden Spalten ausgewählt haben, sollten Sie die Abfrage so ändern, dass sie nur diese ausgewählten Spalten enthält. Das Entfernen überflüssiger Spalten macht den Datenfluss in einem Paket effizienter, da durch weniger Spalten eine kleinere Zeile erstellt wird. Je kleiner eine Zeile ist, desto mehr Zeilen passen in einen Puffer und desto geringer ist der Aufwand für die Verarbeitung aller Zeilen im Dataset.
Wenn Sie eine Abfrage erstellen möchten, können Sie die Abfrage eingeben oder den Abfrage-Generator verwenden.
Hinweis
Wenn Sie ein Paket in SQL Server Data Tools (SSDT) ausführen, listet die Registerkarte Fortschritt des SSIS-Designers Warnungen auf. Diese Warnungen umfassen die Identifizierung jeglicher Datenspalten, die dem Datenfluss von einer Quelle zur Verfügung gestellt werden, jedoch dann nicht von Downstream-Datenflusskomponenten verwendet werden. Sie können die RunInOptimizedMode -Eigenschaft verwenden, um diese Spalten automatisch zu entfernen.
Vermeiden unnötiger Sortierungen
Die Sortierung ist generell ein langsamer Vorgang. Durch Vermeiden unnötiger Sortierungen kann die Leistung des Paketdatenflusses verbessert werden.
Manchmal sind die Quelldaten bereits sortiert, bevor sie von einer Downstreamkomponente verwendet werden. Eine solche Vorsortierung kann auftreten, wenn die SELECT-Abfrage eine ORDER BY-Klausel verwendet hat oder wenn die Daten in sortierter Reihenfolge in die Quelle eingefügt wurden. Für solche vorsortierten Quelldaten können Sie einen Hinweis angeben, dass die Daten sortiert sind, und so die Verwendung einer Transformation zum Sortieren vermeiden, die anderenfalls zum Erfüllen der Sortieranforderungen von bestimmten Downstream-Transformationen erforderlich wäre. (Zum Beispiel erfordern die Merge- und Merge-Join-Transformationen sortierte Eingaben.) Um anzugeben, dass die Daten sortiert sind, müssen Sie die folgenden Aufgaben ausführen:
Legen Sie die IsSorted -Eigenschaft auf der Ausgabe einer Upstreamdatenfluss-Komponente auf Truefest.
Geben Sie die Sortierschlüsselspalten an, in denen die Daten sortiert werden.
Weitere Informationen finden Sie unter Sortieren von Daten für die Transformationen „Zusammenführen“ und „Join für Zusammenführen“.
Wenn die Daten im Datenfluss sortiert werden müssen, können Sie die Leistung verbessern, indem Sie den Datenfluss so entwerfen, dass so wenig Sortiervorgänge wie möglich verwendet werden. Beispielsweise verwendet der Datenfluss eine Multicasttransformation, um das Dataset zu kopieren. Sortieren Sie das Dataset einmal, bevor die Multicasttransformation ausgeführt wird, anstatt mehrere Ausgaben nach der Transformation zu sortieren.
Weitere Informationen finden Sie unter Sort Transformation, Merge Transformation, Merge Join Transformationund Multicast Transformation.
Quellen
OLE DB-Quelle
Wenn Sie eine OLE DB-Quelle verwenden, um Daten aus einer Sicht abzurufen, wählen Sie "SQL-Befehl" als Datenzugriffsmodus aus, und geben Sie eine SELECT-Anweisung ein. Der Zugriff auf Daten mit einer SELECT-Anweisung bietet eine bessere Leistung als die Auswahl von "Tabelle oder Sicht" als Datenzugriffsmodus.
Transformationen
Verwenden Sie die Vorschläge in diesem Abschnitt, um die Leistung der Transformationen Aggregat, Fuzzysuche, Fuzzygruppierung, Nachschlagen, Zusammenführungsjoin und langsam veränderliche Dimension zu verbessern.
Aggregationstransformation
Die Transformation für das Aggregieren enthält die Keys-, die KeysScale-, die CountDistinctKeys- und die CountDistinctScale -Eigenschaften. Diese Eigenschaften verbessern die Leistung, indem sie es der Transformation ermöglichen, die Speichermenge vorab zu reservieren, die sie für die von ihr zwischengespeicherten Daten benötigt. Wenn Sie die genaue oder ungefähre Anzahl von Gruppen kennen, die als Ergebnis eines Group by -Vorgangs erwartet werden, legen Sie die Keys -Eigenschaft bzw. die KeysScale -Eigenschaft fest. Wenn Sie die genaue oder ungefähre Anzahl der unterschiedlichen Werte kennen, die als Ergebnis eines Distinct count -Vorgangs erwartet werden, legen Sie die CountDistinctKeys -Eigenschaft bzw. die CountDistinctScale -Eigenschaft fest.
Wenn Sie in einem Datenfluss mehrere Aggregationen erstellen müssen, sollten Sie diese mit einer einzigen Transformation für das Aggregieren erstellen, anstatt mehrere Transformationen zu verwenden. Durch diesen Ansatz wird die Leistung verbessert, wenn eine Aggregation eine Untergruppe einer anderen Aggregation ist, da die Transformation den internen Speicher optimieren kann und die Eingangsdaten nur einmal durchsuchen muss. Wenn eine Aggregation z. B. eine GROUP BY-Klausel und eine AVG-Aggregation verwendet, kann die Leistung dadurch verbessert werden, dass sie in eine Transformation kombiniert werden. Das Ausführen mehrerer Aggregationen innerhalb einer Transformation für das Aggregieren serialisiert jedoch die Aggregationsvorgänge und verbessert daher möglicherweise nicht die Leistung, wenn mehrere Aggregationen unabhängig voneinander berechnet werden müssen.
Transformationen für Fuzzysuche und Fuzzygruppierung
Informationen zur Leistungsoptimierung der Transformationen für die Fuzzysuche und Fuzzygruppierung finden Sie im Whitepaper Fuzzy Lookup and Fuzzy Grouping in SQL Server Integration Services 2005(in Englisch).
Transformation für Suche
Minimieren Sie die Größe der Verweisdaten im Speicher, indem Sie eine SELECT-Anweisung eingeben, die nur die von Ihnen benötigten Spalten durchsucht. Diese Option bietet eine bessere Leistung als die Auswahl einer gesamten Tabelle oder Sicht, wodurch eine große Menge an unnötigen Daten zurückgegeben wird.
Zusammenführungs-Transformation
Der Wert der MaxBuffersPerInput -Eigenschaft muss nicht mehr konfiguriert werden, da Microsoft Änderungen vorgenommen hat, die das Risiko einer übermäßigen Arbeitsspeicherbelegung bei der Transformation für Zusammenführungsjoins reduzieren. Dieses Problem trat manchmal auf, wenn die mehreren Eingaben des Merge Join Daten mit ungleichmäßigen Raten lieferten.
Transformation für langsam veränderliche Dimensionen
Der Assistent für langsam veränderliche Dimensionen und die Transformation für langsam veränderliche Dimensionen sind universell einsetzbare Tools, die die Anforderungen der meisten Benutzer erfüllen. Der vom Assistenten generierte Datenfluss ist jedoch nicht leistungsoptimiert.
In der Regel sind die langsamsten Komponenten bei der Transformation für langsam veränderliche Dimensionen die OLE DB-Befehlstransformationen, die UPDATE-Vorgänge jeweils nur für eine einzelne Zeile ausführen. Daher besteht die wirksamste Methode zur Verbesserung der Leistung der Slowly-Changing-Dimension-Transformation darin, die OLE DB-Befehl-Transformationen zu ersetzen. Sie können diese Transformationen durch Zielkomponenten ersetzen, die alle zu aktualisierenden Zeilen in eine Stagingtabelle speichern. Anschließend können Sie eine Execute SQL-Aufgabe hinzufügen, die eine einzelne setbasierte Transact-SQL UPDATE für alle Zeilen gleichzeitig ausführt.
Fortgeschrittene Benutzer können für die Verarbeitung von langsam veränderlichen Dimensionen einen benutzerdefinierten Datenfluss entwerfen, der für große Dimensionen optimiert ist. Eine Erläuterung und ein Beispiel dieses Ansatzes finden Sie im Abschnitt "Unique dimension scenario" im Whitepaper Project REAL: Business Intelligence ETL Design Practices(in Englisch).
Ziele
Wenn Sie die Leistung von Zielen erhöhen möchten, sollten Sie ein SQL Server -Ziel verwenden und die Leistung des Ziels testen.
SQL Server-Ziel
Wenn ein Paket Daten in eine Instanz von SQL Server auf demselben Computer lädt, verwenden Sie ein SQL Server -Ziel. Dieses Ziel ist für schnelles Massenladen optimiert.
Testen der Leistung von Zielen
Möglicherweise nimmt das Speichern von Daten in Zielen mehr Zeit als erwartet in Anspruch. Um festzustellen, ob die Verlangsamung dadurch verursacht wird, dass das Ziel die Daten nicht schnell genug verarbeiten kann, können Sie das Ziel vorübergehend durch eine Zeilenanzahltransformation ersetzen. Sollte sich der Durchsatz wesentlich verbessern, ist wahrscheinlich das Ziel, das die Daten lädt, Ursache für die langsamere Verarbeitung.
Prüfen Sie die Informationen auf der Registerkarte Fortschritt
Der SSIS-Designer stellt Informationen über die Ablaufsteuerung und den Datenfluss bereit, wenn Sie ein Paket in SQL Server Data Tools (SSDT) ausführen. Auf der Registerkarte Status werden Tasks und Container in der Ausführungsreihenfolge aufgeführt. Diese Registerkarte enthält außerdem die Start- und Beendigungszeiten, Warnungen und Fehlermeldungen für jeden Task, Container sowie das Paket selbst. Sie enthält außerdem eine nach Ausführungsreihenfolge sortierte Liste der Datenflusskomponenten, Angaben zum Fortschritt in Prozent sowie die Anzahl der verarbeiteten Zeilen.
Zum Aktivieren bzw. Deaktivieren der Anzeige von Meldungen auf der Registerkarte Status schalten Sie die Option Debug-Statusbericht im Menü SSIS um. Beim Ausführen eines komplexen Pakets in SQL Server Data Toolskann eine Deaktivierung der Statusberichterstellung zur Verbesserung der Leistung beitragen.
Verwandte Aufgaben
Verwandte Inhalte
Artikel und Blogbeiträge
Technischer Artikel SQL Server 2005 Integration Services: Eine Leistungsstrategieauf technet.microsoft.com
Technischer Artikel Integration Services: Leistungsoptimierungstechnikenauf technet.microsoft.com
Technischer Artikel Increasing Throughput of Pipelines by Splitting Synchronous Transformations into Multiple Tasks (Erhöhen des Durchsatzes von Pipelines durch Aufteilen synchroner Transformationen in mehreren Tasks) in SQLCATs Handbuch zu BI und Analytics
Technischer Artikel The Data Loading Performance Guide (Leistungsleitfaden für das Laden von Daten)auf msdn.microsoft.com
Technischer Artikel, Wir haben mit SSIS 1 TB in 30 Minuten geladen – und Sie können das auch, auf msdn.microsoft.com.
Technischer Artikel mit den Top 10-Empfehlungen für SQL Server Integration Servicesauf sqlcat.com
Technischer Artikel und Beispiel, The "Balanced Data Distributor" for SSIS (Ausgeglichene Datenverteilung für SSIS) auf sqlcat.com
Blogbeitrag Beheben von Leistungsproblemen bei SSIS-Paketenauf blogs.msdn.com
Videos
Videoserie zum Entwerfen und Optimieren der Leistung von SSIS-Paketen im Unternehmen (SQL-Videoserie)
Video Tuning Your SSIS Package Datenfluss in the Enterprise (SQL Server Video)(Optimieren des SSIS-Paketdatenflusses im Unternehmen) auf technet.microsoft.com
Video Understanding SSIS Datenfluss Buffers (SQL Server Video)(Grundlegendes zu SSIS-Datenflusspuffern) auf technet.microsoft.com
Präsentation, wie Microsoft IT die Verbesserungen der SQL Server 2008 SSIS-Datenfluss-Engine nutzt, auf sqlcat.com.
Video Ausgeglichener Datenverteilerauf technet.microsoft.com
Siehe auch
Tools zur Problembehandlung für die Paketentwicklung
Behandlung von Problemen mit Paketausführungstools