Verbessern der Leistung des Datenflusses

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

HinweisHinweis

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) sowie von Spalten an, die BLOB-Daten (Binary Large Object) (BLOBTempStoragePath) 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, und die maximale Anzahl von Zeilen im Puffer. Legen Sie dazu die DefaultBufferSize-Eigenschaft bzw. die DefaultBufferMaxRows-Eigenschaft fest. Die Standardpuffergröße beträgt 10 Megabyte, die maximale Puffergröße 100 Megabyte. 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 dem Datenflussmodul einen Vorschlag für die Anzahl der zu verwendenden Threads. Der Standardwert ist 5 mit einem Mindestwert von 3. Unabhängig von dem für diese Eigenschaft festgelegten Wert verwendet das Modul jedoch nie mehr Threads als notwendig. Das Modul 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.

    HinweisHinweis

    Die gleichnamige Eigenschaft RunInOptimizedMode kann in Business Intelligence Development Studio auf Projektebene festgelegt werden, um anzugeben, dass der Datenflusstask beim Debuggen im optimierten Modus ausgeführt werden soll. Diese Eigenschaft setzt die RunInOptimizedMode-Eigenschaft von Datenflusstasks zur Entwurfszeit außer Kraft.

Anpassen der Puffergrößenanpassung

Zum Anpassen der Puffergrößen schätzt das Datenflussmodul 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 das Ergebnis größer ist als der Wert von DefaultBufferSize, verringert das Modul die Anzahl der Zeilen.

  • Wenn das Ergebnis kleiner ist als die intern berechnete minimale Puffergröße, vergrößert das Modul die Anzahl der Zeilen.

  • Wenn das Ergebnis zwischen der minimalen Puffergröße und dem Wert von DefaultBufferSize liegt, nähert das Modul die Größe des Puffers so gut wie möglich an das Produkt aus geschätzter Zeilengröße und Wert von DefaultBufferMaxRows an.

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.

Wenn genügend Arbeitsspeicher zur Verfügung steht, sollten Sie anstelle von wenigen großen Puffern besser viele kleine Puffer verwenden. Sie können also die Leistung durch Verringern der Gesamtanzahl der zum Speichern von Daten benötigten Puffer sowie durch maximale Auslastung des Pufferspeichers mit Datenspalten verbessern. Probieren Sie zum Bestimmen der optimalen Pufferanzahl und -größe verschiedene Wert für DefaultBufferSize und DefaultBufferMaxRows aus. Überwachen Sie dabei die Leistung und die vom BufferSizeTuning-Ereignis gemeldeten Informationen.

Erhöhen Sie die Puffergröße nicht bis zu dem Punkt, an dem die Auslagerung auf den Datenträger beginnt. Die Auslagerung auf den Datenträger beeinträchtigt die Leistung mehr als eine nicht optimierte Puffergröße. Überwachen Sie den Leistungsindikator "Gespoolte Puffer" im Leistungs-Snap-In der Microsoft-Management Console (MMC), um zu bestimmen, ob eine Auslagerung auftritt. 

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. Stellen Sie sich jedoch vor, dass jeder Datenflusstask über 10 Quelle-zu-Ziel-Ausführungsstrukturen verfügt. 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 das Datenflussmodul 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. Jeder Datenflusstask enthält zehn Quelle-zu-Ziel-Ausführungsstrukturen. Wenn Sie die EngineThreads-Eigenschaft in jedem Datenflusstask auf 10 festlegen, können alle 30 Ausführungsstrukturen gleichzeitig ausgeführt werden.

HinweisHinweis

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 <tableName>. 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.

HinweisHinweis

Wenn Sie ein Paket in Business Intelligence Development Studio ausführen, werden auf der Registerkarte Status des SSIS-Designers Warnungen aufgelistet. 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. (Beispielsweise erfordern die Transformationen für Zusammenführen und Zusammenführungsjoin sortierte Eingaben.) Wenn Sie einen Hinweis geben möchten, 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 True fest.

  • Geben Sie die Sortierschlüsselspalten an, in denen die Daten sortiert werden.

Weitere Informationen finden Sie unter Vorgehensweise: Sortieren von Daten für die Transformationen für Zusammenführen und Zusammenführungsjoin.

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 Transformation zum Sortieren, Transformation für Zusammenführen, Transformation für Zusammenführungsjoin und Transformation für Multicast.

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

Verbessern Sie mithilfe der Vorschläge in diesem Abschnitt die Leistung der Transformation für das Aggregieren, für Fuzzysuche, Fuzzygruppierung, Suche, Zusammenführungsjoin und für langsam veränderliche Dimensionen.

Transformation für das Aggregieren

Die Transformation für das Aggregieren enthält die Keys-, die KeysScale-, die CountDistinctKeys- und die CountDistinctScale-Eigenschaften. Diese Eigenschaften dienen einer verbesserten Leistung, indem es der Transformation ermöglicht wird, den zum Zwischenspeichern von Daten benötigten Speicher zuzuordnen. 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.

Weitere Informationen finden Sie unter Transformation für das Aggregieren.

Transformationen für Fuzzysuche und Fuzzygruppierung

Informationen zur Leistungsoptimierung der Transformationen für die Fuzzysuche und Fuzzygruppierung finden Sie im Whitepaper Transformationen für die Fuzzysuche und Fuzzygruppierung in SQL Server Integration Services 2005.

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.

Transformation für Zusammenführungsjoin

Die Transformation für Zusammenführungsjoin schließt die MaxBuffersPerInput-Eigenschaft ein, die die maximale Anzahl an Puffern angibt, die jeweils für eine Eingabe aktiviert sein kann. Sie können diese Eigenschaft verwenden, um den von den Puffern verwendeten Arbeitsspeicher und damit gleichzeitig die Leistung der Transformation zu optimieren. Je höher die Anzahl an Puffern ist, umso mehr Arbeitsspeicher verwendet die Transformation, und umso besser ist die Leistung. Der Standardwert der MaxBuffersPerInput-Eigenschaft ist 5. Dies ist zugleich die in den meisten Szenarien optimal funktionierende Anzahl an Puffern. Um die Leistung zu verbessern, sollten Sie unter Umständen die Anzahl der zu verwendenden Puffer leicht erhöhen oder senken, beispielsweise auf 4 oder 6 Puffer. Vermeiden Sie nach Möglichkeit die Verwendung einer sehr kleinen Anzahl an Puffern. Beispielsweise wirkt sich das Festlegen der Standardeinstellung der MaxBuffersPerInput-Eigenschaft von 5 auf 1 in bedeutendem Maße auf die Leistung aus. Sie sollten die MaxBuffersPerInput-Eigenschaft auch nicht auf 0 oder weniger festlegen. Dieser Wertebereich bedeutet, dass keine Drosselung auftritt und dass in Abhängigkeit von den geladenen Daten und der verfügbaren Arbeitsspeichermenge das Paket möglicherweise nicht vollständig ausgeführt wird.

Die Transformation für Zusammenführungsjoin kann vorübergehend die verwendete Anzahl an Puffern über den in der MaxBuffersPerInput-Eigenschaft angegebenen Wert hinaus erhöhen, um Deadlocks zu umgehen. Wenn die Deadlockbedingung behoben wurde, gibt die MaxBuffersPerInput-Eigenschaft ihren konfigurierten Wert zurück.

Weitere Informationen finden Sie unter Transformation für Zusammenführungsjoin.

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 in der Transformation für langsam veränderliche Dimensionen die Transformationen für OLE DB-Befehl, die UPDATEs für jeweils eine Zeile ausführen. Daher ist die effizienteste Methode zur Verbesserung der Leistung der Transformation für langsam veränderliche Dimensionen das Ersetzen der Transformationen für OLE DB-Befehl. Sie können diese Transformationen durch Zielkomponenten ersetzen, die alle zu aktualisierenden Zeilen in eine Stagingtabelle speichern. Sie können dann einen Task "SQL ausführen" hinzufügen, der für alle Zeilen gleichzeitig ein einzelnes setbasiertes Transact-SQL-UPDATE 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 "Szenario mit eindeutigen Dimensionen" im Whitepaper Project REAL: Entwurfsmethoden für Business Intelligence ETL.

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 herauszufinden, ob dies darauf zurückzuführen ist, dass das Ziel die Daten nicht schnell genug verarbeiten kann, können Sie das Ziel vorübergehend durch eine Transformation für Zeilenanzahl ersetzen. Sollte sich der Durchsatz wesentlich verbessern, ist wahrscheinlich das Ziel, das die Daten lädt, Ursache für die langsamere Verarbeitung.

Überwachen der Leistung von Paketen

Integration Services enthält Tools und Funktionen, die Sie zum Überwachen der Leistung von Paketen verwenden können. Mit der Protokollierung können Sie z. B. die Laufzeitinformationen zu einem Paket erfassen und mit den Leistungsindikatoren das Datenflussmodul überwachen. Bestimmen Sie anhand der folgenden Vorschläge, welche Bestandteile des Pakets den größten Einfluss auf die Leistung haben: 

Überprüfen der Informationen auf der Registerkarte Status

Im SSIS-Designer werden zusätzliche Informationen zur Ablaufsteuerung und zum Datenfluss beim Ausführen von Paketen in Business Intelligence Development Studio bereitgestellt. 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 BI Development Studio kann eine Deaktivierung der Statusberichterstellung zur Verbesserung der Leistung beitragen.

Konfigurieren der Protokollierung in Paketen

Integration Services enthält eine Vielzahl von Protokollanbietern, die eine Protokollierung von Informationen zur Laufzeit durch Pakete in verschiedene Dateitypen oder in SQL Server ermöglichen. Sie können Protokolleinträge für Pakete und für einzelne Paketobjekte, wie Tasks und Container, ermöglichen. Integration Services enthält eine Vielzahl von Tasks und Containern, und jeder Task und Container besitzt einen eigenen Satz mit beschreibenden Protokolleinträgen. Ein Paket, das z. B. einen Task 'SQL ausführen' enthält, kann einen Protokolleintrag schreiben, der die SQL-Anweisung auflistet, die von dem Task ausgeführt wurde, einschließlich der Parameterwerte für die Anweisung.

Die Protokolleinträge enthalten Informationen, z. B. die Start- und Beendigungszeit von Paketen und Paketobjekten, wodurch die Geschwindigkeit von ausgeführten Tasks und Containern reduziert wird. Weitere Informationen finden Sie unter Protokollierung der Paketausführung, Implementieren der Protokollierung in Pakete und Benutzerdefinierte Meldungen für die Protokollierung.

Konfigurieren der Protokollierung für Datenflusstasks

Der Datenflusstask stellt eine Reihe von benutzerdefinierten Protokolleinträge bereit, die zum Überwachen und Anpassen der Leistung verwendet werden können. Sie können beispielsweise Komponenten überwachen, die möglicherweise Arbeitsspeicherverluste verursachen, oder nachverfolgen, wie lange das Ausführen einer bestimmten Komponente dauert. Eine Liste dieser benutzerdefinierten Protokolleinträge sowie Beispiele für Protokollausgaben finden Sie unter Datenflusstask.

Verwenden des PipelineComponentTime-Ereignisses

Das PipelineComponentTime-Ereignis stellt möglicherweise den nützlichsten benutzerdefinierten Protokolleintrag dar. Dieser Protokolleintrag meldet den Zeitaufwand in Millisekunden, den jede Komponente im Datenfluss für die fünf Hauptverarbeitungsschritte jeweils aufbringt. Die Verarbeitungsschritte werden in der folgende Tabelle beschrieben. Integration Services-Entwickler kennen diese Schritte als Hauptmethoden von PipelineComponent.

Schritt

Beschreibung

Überprüfen

Die Komponente überprüft Eigenschaftswerte und Konfigurationseinstellungen auf ihre Gültigkeit.

PreExecute

Die Komponente führt eine einmalige Verarbeitung aus, bevor sie mit der Verarbeitung von Datenzeilen beginnt.

PostExecute

Die Komponente führt eine einmalige Verarbeitung aus, nachdem alle Datenzeilen verarbeitet wurden.

ProcessInput

Die Transformations- oder Zielkomponente verarbeitet die eingehenden Datenzeilen, die von einer Upstreamquelle oder einer Transformation an sie übergeben wurden.

PrimeOutput

Die Quell- oder Transformationskomponente füllt die Puffer von Daten auf, die an eine Downstreamtransformation oder eine Zielkomponente übergeben werden sollen.

Wenn Sie das PipelineComponentTime-Ereignis aktivieren, protokolliert Integration Services eine Meldung für jeden der von den einzelnen Komponenten ausgeführten Verarbeitungsschritt. Die folgenden Protokolleinträge zeigen eine Teilmenge der Meldungen, die vom Integration Services CalculatedColumns-Paketbeispiel protokolliert werden:

The component "Calculate LineItemTotalCost" (3522) spent 356 milliseconds in ProcessInput.

The component "Sum Quantity and LineItemTotalCost" (3619) spent 79 milliseconds in ProcessInput.

The component "Calculate Average Cost" (3662) spent 16 milliseconds in ProcessInput.

The component "Sort by ProductID" (3717) spent 125 milliseconds in ProcessInput.

The component "Load Data" (3773) spent 0 milliseconds in ProcessInput.

The component "Extract Data" (3869) spent 688 milliseconds in PrimeOutput filling buffers on output "OLE DB Source Output" (3879).

The component "Sum Quantity and LineItemTotalCost" (3619) spent 141 milliseconds in PrimeOutput filling buffers on output "Aggregate Output 1" (3621).

The component "Sort by ProductID" (3717) spent 16 milliseconds in PrimeOutput filling buffers on output "Sort Output" (3719).

Diese Protokolleinträge zeigen, dass der Datenflusstask den größten Zeitaufwand für die folgenden, hier in absteigender Reihenfolge gezeigten Schritte benötigt hat:

  • Die OLE DB-Quelle mit dem Namen "Extract Data" hat 688 Millisekunden für das Laden von Daten benötigt.

  • Die Transformation für abgeleitete Spalten mit dem Namen "Calculate LineItemTotalCost" hat 356 Millisekunden für das Durchführen von Berechnungen für eingehende Zeilen benötigt.

  • Die Transformation für das Aggregieren mit dem Namen "Sum Quantity and LineItemTotalCost" hat insgesamt 220 Millisekunden - 141 für den PrimeOutput- und 79 für den ProcessInput-Schritt - benötigt, um Berechnungen durchzuführen und die Daten an die nächste Transformation zu übergeben.

Überwachen der Leistung des Datenflussmoduls

Integration Services enthält einen Satz Leistungsindikatoren für die Überwachung der Leistung des Datenflussmoduls. So können Sie z. B. den gesamten Speicherplatz in Byte verfolgen, der von allen Puffern verwendet wird, und prüfen, ob genügend Speicher für die Komponenten zur Verfügung steht. Ein Puffer ist ein Speicherblock, der von einer Komponente zum Speichern von Daten verwendet wird. Weitere Informationen finden Sie unter Überwachen der Leistung des Datenflussmoduls.

Externe Ressourcen

Integration Services (kleines Symbol) Bleiben Sie mit Integration Services auf dem neuesten Stand

Die neuesten Downloads, Artikel, Beispiele und Videos von Microsoft sowie ausgewählte Lösungen aus der Community finden Sie auf der Integration Services-Seite von MSDN:


Abonnieren Sie die auf der Seite verfügbaren RSS-Feeds, um automatische Benachrichtigungen zu diesen Aktualisierungen zu erhalten.