Udostępnij za pośrednictwem


Zwiększanie wydajności przepływu danych

W tym temacie podano sugestie dotyczące projektowania Integration Services pakietów, aby uniknąć typowych problemów wydajności.Ten temat zawiera również informacje o funkcjach i narzędzia używane do rozwiązywania problemów z wydajnością pakietów.

Konfigurowanie przepływu danych

Aby skonfigurować zadanie przepływu danych dla lepszej wydajności, można skonfigurować właściwości tego zadania, dopasować rozmiar buforu i skonfiguruj pakiet wykonywanie równoległe.

Konfigurowanie właściwości zadania przepływu danych

Ostrzeżenie

Właściwości omówione w tej sekcji muszą być zestaw oddzielnie dla każdego zadania przepływu danych w pakiecie.

Można skonfigurować następujące właściwości zadania przepływu danych, które wpływają na wydajność:

  • Określ lokalizacje do tymczasowego przechowywania danych w buforze (BufferTempStoragePath właściwość) i kolumny zawierające dane duży obiekt binarny (BLOB) (BLOBTempStoragePath właściwość).Domyślnie właściwości te zawierają wartości zmienne środowiskowe TEMP i TMP.Można określić inne foldery tymczasowe pliki na szybszy lub inny dysk twardy lub rozmieścić je na wielu dyskach.Można określić wiele katalogów rozgraniczającego nazw katalogów średnikami.

  • Zdefiniować domyślny rozmiar buforu, który używa zadania, ustawiając DefaultBufferSize właściwość i zdefiniować maksymalną liczbę wierszy w poszczególnych buforach ustawiając DefaultBufferMaxRows właściwość.Domyślny rozmiar buforu jest 10 megabajtów z maksymalny rozmiar buforu 100 megabajtów.Domyślna maksymalna liczba wierszy jest równa 10 000.

  • Ustaw liczbę wątków, które zadania można użyć w czasie wykonywania przez ustawienie EngineThreads właściwość.Ta właściwość zawiera sugestię, aby aparat przepływ danych o liczbę wątków używanych.Wartością domyślną jest 5, z minimalną wartość 3.Jednak aparat nie będzie używać więcej wątków nie musi, niezależnie od wartości tej właściwość.Aparat może również wykorzystywać więcej wątków niż określony w tej właściwość, jeśli to konieczne uniknąć problemów współbieżność.

  • Wskazuje, czy przepływ danych zadanie jest uruchamiane w trybie zoptymalizowane (RunInOptimizedMode właściwość).Tryb zoptymalizowany zwiększa wydajność przez usunięcie nieużywanych kolumn, wyjść i składniki z przepływ danych.

    Ostrzeżenie

    W właściwość o tej samej nazwie RunInOptimizedMode, zestaw poziom projektu w Business Intelligence Development Studio Aby wskazać zadanie przepływu danych uruchamiany podczas debugowania w trybie zoptymalizowane.Ta właściwość projektu zastępuje RunInOptimizedMode Właściwości zadania przepływu danych na czas projektowania.

Dopasowywanie rozmiaru buforów

aparat przepływ danych Zaczyna zadanie zmiany rozmiaru buforów jego obliczając szacowany rozmiar pojedynczego wiersza danych.A następnie go mnoży szacowany rozmiar wiersza przez wartość DefaultBufferMaxRows do uzyskania wstępnych wartości pracy dla rozmiar buforu.

  • Jeśli wynik jest większa niż wartość DefaultBufferSize, silnik zmniejsza liczbę wierszy.

  • Jeśli wynik jest mniejszy niż rozmiar buforu Minimalna obliczona wewnętrznie, silnika zwiększa liczbę wierszy.

  • Jeśli wynik przypada między minimalny rozmiar buforu i wartość DefaultBufferSize, rozmiary silnika buforu, jak najbliżej możliwie rozmiar wiersza szacowany czas wartość DefaultBufferMaxRows.

Po rozpoczęciu badania wydajności zadań przepływ danych, użyj wartości domyślnych dla DefaultBufferSize i DefaultBufferMaxRows.Włączyć rejestrowanie na zadanie przepływ danychi wybierz zdarzenie BufferSizeTuning, aby zobaczyć, ile wierszy są zawarte w poszczególnych buforach.

Przed rozpoczęciem dostosowywania rozmiaru buforów poprawy najważniejsze, to jest zmniejszyć rozmiar każdego wiersza danych, usuwając zbędne kolumny i odpowiednio konfigurując typów danych.

Po udostępnieniu wystarczającej ilości pamięci należy użyć mniejszej liczby dużych buforów zamiast większą liczbę małych buforów.Innymi słowy można zwiększyć wydajność przez zmniejszenie całkowitej liczby buforów wymaganych do przechowywania danych i przybliżając tyle wierszy danych do buforu, jak to możliwe.Aby określić optymalną liczbę buforów i ich wielkości, eksperymentować z wartości DefaultBufferSize i DefaultBufferMaxRows podczas monitorowania wydajności i informacji zgłoszonych przez zdarzenie BufferSizeTuning.

Zwiększa rozmiar buforu do punktu, gdzie występują rozpoczyna stronicowania na dysku.Stronicowania na dysku hamuje wydajności większej niż rozmiar buforu, który nie został zoptymalizowany.Aby ustalić, czy występuje stronicowania, monitorowanie "buforowane buforów" Licznik wydajności w przystawce wydajność z Microsoft Management Console (MMC).

Skonfiguruj pakiet równoległego

Równoległe wykonywanie zwiększa wydajność na komputerach z wieloma procesorami fizyczne lub logiczne.Do obsługi wykonywanie równoległe różnych zadań w pakiet, Integration Services wykorzystuje dwie właściwości: MaxConcurrentExecutablesand EngineThreads.

Właściwość MaxConcurrentExcecutables

MaxConcurrentExecutables Właściwość jest właściwość pakiet sobie.Właściwość ta określa, ile zadań można uruchomić jednocześnie.Wartością domyślną jest -1, co oznacza liczbę procesorów fizyczne lub logiczne plus 2.

Aby pojąć działanie tej właściwość, należy rozważyć pakiet próbki, który ma trzy zadania przepływu danych.Jeśli użytkownik zestaw MaxConcurrentExecutables 3, wszystkie trzy zadania przepływu danych może być równocześnie.Jednakże, załóżmy, że każde zadanie przepływu danych zawiera źródło 10-do-obiekt docelowy drzew wykonanie.Ustawienie MaxConcurrentExecutables 3 nie zapewnia uruchomienie drzew wykonanie wewnątrz każdego zadania przepływu danych w równolegle.

Właściwość EngineThreads

EngineThreads właściwość jest właściwością każdego przepływu danych zadań.Właściwość ta określa, ile wątki aparat przepływ danych można tworzyć i równolegle.EngineThreads Właściwość stosuje się jednakowo do obu źródło wątki, które aparat przepływ danych tworzy dla źródło i wątków roboczych, tworzonych przez silnik przekształcenia i miejsc docelowychDlatego ustawienie EngineThreads 10 oznacza, że silnik można utworzyć maksymalnie dziesięć wątków źródło i maksymalnie dziesięć wątków roboczych.

Aby pojąć działanie tej właściwość, należy rozważyć pakiet próbki z trzech zadań przepływu danych.Każdy przepływ danych zadania zawiera dziesięć źródło-do-obiekt docelowy drzew wykonanie.Jeśli użytkownik zestaw EngineThreads do 10 dla każdego przepływu danych zadania wszystkich drzew 30 wykonanie może potencjalnie działać jednocześnie.

Ostrzeżenie

Omówienie wątków wykracza poza zakres tego tematu.Jednakże ogólna reguła nie ma równolegle więcej wątków niż liczba dostępnych procesorów.Uruchamianie wątków więcej niż liczba dostępnych procesorów mogą zmniejszyć wydajność ze względu na częste przełączania kontekstu między wątków.

Konfigurowanie składników przepływu danych indywidualnych

Aby skonfigurować poszczególne przepływ danych składników dla lepszej wydajności, istnieją pewne ogólne wytyczne, które można wykonać.Są również szczegółowe wytyczne dla każdego typu składnik przepływ danych: źródło, transformacja, i obiekt docelowy.

Wskazówki ogólne

Niezależnie od składnik przepływ danych, istnieją dwie wytyczne ogólne, które należy wykonać w celu zwiększenia wydajności: Optymalizacja kwerend i uniknąć niepotrzebnych ciągi.

Optymalizacja kwerend

Numer części przepływ danych należy użyć kwerendy, albo gdy one wyodrębnić danych ze źródeł lub w operacjach wyszukiwania, aby utworzyć tabele odwołań.Kwerenda domyślnie używa SELECT * FROM <Nazwa_tabeli> składni.Ten typ kwerendy zwraca wszystkie kolumny w źródło tabela.Posiadające wszystkie kolumna w projekt czas umożliwia wybór dowolnej kolumna jako odnośnika, przekazujących lub kolumna źródłową.Jednak po wybraniu kolumn, które mają być używane, powinny poprawić kwerendy, aby uwzględnić tylko wybrane kolumny.Usuwanie kolumny nadmiar ułatwia przepływ danych w pakiet bardziej efektywne, ponieważ mniej kolumn utworzyć mniejszej liczby wierszy.Mniejszej liczby wierszy oznacza, że więcej wierszy można dopasowanie do buforu i mniej pracy jest przetworzyć wszystkie wiersze w zestawie danych.

Aby skonstruować kwerendę, można wpisać kwerendy lub użyć Konstruktora kwerend.

Ostrzeżenie

Po uruchomieniu pakiet Business Intelligence Development Studio, na karcie postępu SSIS Projektant wyświetla ostrzeżenia.Ostrzeżenia te obejmują identyfikujący jakiejkolwiek kolumna danych, źródło udostępnia przepływ danych, ale nie jest następnie używany przez składniki przepływ danych niższego rzędu.Można użyć RunInOptimizedMode właściwość, aby automatycznie usunąć te kolumny.

Należy unikać niepotrzebnego sortowania

Sortowanie jest nieodłącznie wolne działanie i unikania zbędnych sortowanie może poprawić wydajność pakiet przepływ danych.

Czasami źródło danych została przeniesiona już przed ich użyciem przez składnik niższego rzędu.Takie dostarczycielem może wystąpić użyto klauzula ORDER BY, kwerendę WYBIERAJĄCĄ lub gdy włożono źródło posortowane dane.Takie pre-sorted źródło danych można zapewnić wskazówki są sortowane dane, a tym samym uniknąć stosowania transformacja sortowania sortowania wymagań niektórych przekształceń niższego rzędu.(Na przykład, przekształcenia scalania i Merge Join wymagają sortowane dane wejściowe). Określ wskazówkę, że dane są sortowane, muszą wykonywać następujące zadania:

  • Ustaw IsSorted Właściwość dane wyjściowe kopalnianych składnik przepływu danych do True.

  • Określić sortowanie klucz kolumny, w których dane są sortowane.

Aby uzyskać więcej informacji, zobacz Jak Sortowanie danych dla korespondencji seryjnej i przekształcenia sprzężenia korespondencji seryjnej.

Jeśli trzeba posortować dane w przepływ danych, można zwiększyć wydajność przez projektowanie przepływ danych, aby używać możliwie mało sortować operacji.Na przykład przepływ danych używa transformacja multiemisji do kopiowania zestawu danych.Sortowanie dataset raz przed uruchamia transformacja multiemisji zamiast sortować wiele wyjść po transformacja.

Aby uzyskać więcej informacji, zobacz Przekształcenie sortowania, Scalanie transformacji, Przekształcenie sprzężenia korespondencji seryjnej, i Przekształcenie multiemisji.

Źródła

OLE DB źródła

Korzystając z programu źródło danych OLE DB do pobierania danych z widoku, zaznacz "Polecenia SQL" dane trybu dostępu i wprowadź SELECT instrukcja.Dostęp do danych za pomocą instrukcja SELECT wykonuje lepiej niż wybieranie "Tabeli lub widoku" jako tryb dostępu do danych.

Przekształcenia

Użyj sugestie w tej sekcji do poprawy wydajności agregacji, Wyszukiwanie rozmyte, rozmyte grupowania, wyszukiwanie, Merge Join i powoli Zmiana wymiaru przekształceń.

Przekształcenie agregacji

Obejmuje agregacji transformacja Keys, KeysScale, CountDistinctKeys, i CountDistinctScale Właściwości.Te właściwości poprawić wydajność, umożliwiając transformację do przydzielenia ilości pamięci potrzebuje transformacja danych, która buforuje transformacja.Jeśli znasz numer przybliżone grup, których oczekuje się w wyniku grupy przez zestaw operacji, Keys i KeysScale Właściwości, odpowiednio.Jeśli znasz numer przybliżone wartooci distinct, których oczekuje się w wyniku Zliczenie wyróżnionych zestaw operacji, CountDistinctKeys i CountDistinctScale Właściwości, odpowiednio.

Jeśli trzeba utworzyć wiele agregacji w przepływ danych, należy rozważyć utworzenie wiele agregacji, używające jednej transformacja agregacji zamiast tworzenia wielu przekształceń.Podejście to zwiększa wydajność podczas agregacja jest podzbiór innego agregacja, ponieważ transformacja można zoptymalizować wewnętrznej pamięci masowej i skanowanie przychodzących danych tylko raz.Jeśli agregacja używa klauzula GROUP BY i agregacja AVG, łączenie ich w jednej transformacja może zwiększyć wydajność.Jednak wiele agregacja w ramach jednej transformacja agregacja wykonywania serializes operacji agregacja i dlatego nie może zwiększyć wydajność, gdy wiele agregacja muszą być obliczone niezależnie.

Aby uzyskać więcej informacji, zobacz Przekształcenie agregacji.

Wyszukiwanie rozmyte i rozmyte przekształcenia grupowania

Aby uzyskać informacje dotyczące optymalizacji wydajności przekształcenia Wyszukiwanie rozmyte i grupowanie rozmyte, zobacz oficjalny dokument Wyszukiwanie rozmyte i rozmyte grupowania w programie SQL Server Integration Services 2005.

Przekształcenie wyszukiwania

Zminimalizować rozmiar w pamięci danych źródłowych, wprowadzając SELECT instrukcja , wyszukuje tylko potrzebne kolumny.Ta opcja działa lepiej niż zaznaczenie całej tabela lub widoku, który zwraca duże ilości zbędnych danych.

Przekształcenie sprzężenia korespondencji seryjnej

transformacja Merge Join zawiera MaxBuffersPerInput właściwość, która określa maksymalną liczbę buforów, które mogą być aktywne dla każdego wejścia na jedną czas.Ta właściwość służy do dostrojenia kwoty zajmują buforów pamięci i w konsekwencji wydajność transformacja.Im większa liczba buforów, więcej pamięci używa transformacja i lepszą wydajność jest.Wartość domyślna, MaxBuffersPerInput jest 5, który jest liczba buforów, które działa dobrze w większości scenariuszy.Do dostrajania wydajności, można spróbować użyć nieco inna liczba buforów, takich jak 4 lub 6.Jeśli to możliwe należy unikać bardzo małej liczby buforów.Na przykład, ustawienie MaxBuffersPerInput 1 zamiast 5 ma znaczący wpływ na wydajność.Ponadto należy nie zestaw MaxBuffersPerInput 0 lub mniej.To zakres wartości oznacza, że ograniczenie nie występuje i w zależności od obciążenia danych i ilość dostępnej pamięci może zakończyć się pakiet.

W celu uniknięcia zakleszczenie, transformacja Merge Join tymczasowo może zwiększyć liczbę buforów używa poza wartością MaxBuffersPerInput.Po rozpoznaniu zakleszczenie, MaxBuffersPerInput zwraca do jego skonfigurowaną wartość.

Aby uzyskać więcej informacji, zobacz Przekształcenie sprzężenia korespondencji seryjnej.

Zmiana powoli transformacji wymiaru

Powoli Zmiana wymiaru Kreator i transformacja powoli Zmiana wymiaru to narzędzia ogólnego, spełniające potrzeby większości użytkowników.Przepływ danych, Kreator generuje nie jest optymalizowany dla wydajności.

Zazwyczaj składniki najwolniejszy transformacja powoli Zmiana wymiaru są transformacja polecenia OLE DB, które wykonują aktualizacje przeciwko pojedynczego wiersza w czas.Dlatego najbardziej skutecznym sposobem zwiększenia wydajności przemiany powoli Zmiana wymiaru jest zastąpienie transformacja polecenia OLE DB.Można zastąpić te przekształceń obiekt docelowy składników, które są zapisane wszystkie wiersze zaktualizowane do tabela tymczasowej.Następnie można dodać zadanie wykonanie instrukcji SQL, które wykonuje jedną na podstawie zestaw języka Transact-SQL AKTUALIZACJĘ przeciwko wszystkie wiersze w tym samym czas.

Użytkownicy zaawansowani można zaprojektować przepływ danych niestandardowych dla powoli zmienny wymiar przetwarzania jest zoptymalizowana ze względu na duże wymiary.Dyskusji i przykład tego podejścia zobacz sekcję, "unikatowy wymiar Scenariusz" w białej księdze RZECZYWISTYMI projektu: Business Intelligence projekt ETL praktyki.

Miejsca docelowe

Aby osiągnąć lepszą wydajność z obiekt docelowys, należy rozważyć użycie SQL Server obiekt docelowy i badania obiekt docelowyjego wydajności.

SQL ServerMiejsce docelowe

Załadowanie danych do wystąpienie pakiet SQL Server na tym samym komputerze, użyj SQL Server obiekt docelowy.W tej obiekt docelowy jest zoptymalizowany do ładunków masowych o dużej szybkości.

Test wydajności miejsc docelowych

Może się okazać, że zapisywanie danych do miejsc docelowych zajmuje więcej czas niż oczekiwano.Aby określić, czy powolność przyczyną jest niemożność docelowego wystarczająco szybko przetwarzania danych, można tymczasowo zastąpić obiekt docelowy transformacja liczba wierszy.Jeżeli przepustowość zwiększa znacznie, prawdopodobnie obiekt docelowy, Trwa ładowanie danych powoduje spowolnienie.

Monitorowanie wydajności pakietu

Integration Services zawiera narzędzia i funkcje, których można używać do monitorowania wydajności pakiet.Na przykład rejestrowanie przechwytuje Uruchom -czas informacji na temat pakietu i liczniki wydajności pozwalają monitorować aparat przepływ danych.Aby określić, które części pakiet występują największy wpływ na wydajność, należy skorzystać z następujących sugestii.

Przejrzyj informacje na karcie postępu

SSISProjektant zawiera informacje dotyczące zarówno przepływ sterowania i przepływ danych podczas uruchamiania pakiet w Business Intelligence Development Studio.Postępu karta zawiera listę zadań i pojemniki w celu wykonania oraz rozpoczęcia i czas zakończenia, ostrzeżenia i komunikaty o błędach dla każdego zadania i kontener, włącznie z pakiet sobie.Ponadto Wyświetla listę składników przepływ danych w celu wykonania i zawiera informacje dotyczące postępu wyświetlane jako procent ukończenia, a liczba przetwarzanych wierszy.

Aby włączyć lub wyłączyć wyświetlanie komunikatów w postępu karta, przełącz Debug raportowania postępu opcji na SSIS menu.Wyłączanie raportowania postępu można poprawić wydajność podczas korzystania z pakiet złożonych BI Development Studio.

Konfigurowanie rejestrowania w pakiecie

Integration Serviceszawiera szereg włączeni, które zezwalają na pakiety rejestrować informacje przy uruchomieniu czas do różnych typów plików lub do SQL Server.You can enable log entries for packages and for individual package objects such as tasks and containers.Integration Services includes a wide variety of tasks and containers, and each task and container has its own set of descriptive log entries.Na przykład pakiet, który zawiera zadanie wykonanie instrukcja języka SQL można napisać wpis dziennika, zawierająca instrukcję SQL, która wykonywane zadanie, w tym wartości parametrów dla instrukcji.

Wpisy dziennika obejmują informacje takie jak rozpoczęcia i zakończenia obiektów pakiet, pozwalający zidentyfikować wolne uruchomione zadania i kontenerów i opakowań.Aby uzyskać więcej informacji, zobacz Wykonanie pakietów rejestrowania, Implementowanie rejestrowania w opakowaniach, i Niestandardowe komunikaty do rejestrowania.

Konfigurowanie rejestrowania zadań przepływu danych

Zadanie przepływu danych zawiera wiele wpisów dziennika niestandardowe, które może służyć do monitorowania i dostrajania wydajności.Na przykład można monitorować składników, które mogą spowodować przecieki pamięci, lub do śledzenia jak długo trwa uruchomienie określonego składnika.Listę tych wpisów dziennika niestandardowe i przykładowe dane wyjściowe rejestrowania, zobacz Zadania przepływu danych.

Użyj zdarzenia PipelineComponentTime

Prawdopodobnie najbardziej użyteczne wpis dziennika niestandardowego jest zdarzenie PipelineComponentTime.Ten wpis dziennika raporty liczbę milisekund poszczególnych składników przepływ danych spędza na każde pięć kroków głównych przetwarzania.The following table describes these processing steps.Integration Services developers will recognize these steps as the principal methods of a PipelineComponent.

Krok

Opis

Sprawdź poprawność

Składnik sprawdza wartości prawidłowej właściwość i ustawienia konfiguracja.

PreExecute

Składnik wykonuje jedno -czas przetwarzania przed rozpoczyna przetwarzanie wierszy danych.

PostExecute

Składnik wykonuje jedno -czas przetwarzania po przetwarzania wszystkich wierszy danych.

ProcessInput

transformacja lub obiekt docelowy składnik przetwarzania przychodzących wierszy danych, kopalnianych źródło lub transformacja przeszedł do niego.

PrimeOutput

Składnik źródło lub transformacja wypełnia buforów danych mają być przekazywane do niższego rzędu składnika transformacja lub obiekt docelowy.

Po włączeniu zdarzenie PipelineComponentTime Integration Services Dzienniki jednej wiadomości dla każdego etapu przetwarzania wykonywane przez każdego składnika.Następujące wpisy dziennika Pokaż podzbiór wiadomości Integration Services CalculatedColumns pakiet dzienniki próbki:

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

Pokaż tych wpisów dziennika, czy przepływ danych zadań poświęconego najbardziej czas w poniższych krokach pokazano w kolejności malejącej:

  • The OLE DB source that is named "Extract Data" spent 688 ms.loading data.

  • The Derived Column transformation that is named "Calculate LineItemTotalCost" spent 356 ms.performing calculations on incoming rows.

  • transformacja agregacji, o nazwie "Suma ilości i LineItemTotalCost" zużyte Scalonej ms 220 — 141 w PrimeOutput i 79 w ProcessInput — wykonywanie obliczeń i przekazywanie danych do następnego transformacja.

Monitorowanie wydajności aparatu przepływu danych

Integration Services zawiera zestaw liczników wydajności do monitorowania wydajności aparat przepływ danych.Na przykład można śledzić całkowita ilość pamięci w bajtach, w których wszystkie bufory używane i sprawdź, czy składniki są w pamięci.Bufor jest blok pamięci, który składnik używa do przechowywania danych.Aby uzyskać więcej informacji, zobacz Monitorowanie wydajności aparatu przepływu danych.

Zasoby zewnętrzne

Ikona usług Integration Services (mała)Bieżąco z usług integracji

Najnowsze pliki do pobrania, artykuły, próbki i wideo firmy Microsoft, jak również wybranych rozwiązań ze Wspólnoty, odwiedź witrynę Integration Services strona na MSDN i TechNet:

Aby otrzymywać automatyczne powiadomienia dotyczące tych aktualizacji, zasubskrybuj źródła danych RSS dostępne na tej stronie.