SSIS cache w transformacji Lookup (cz. 1/3)

Dobór odpowiedniego sposobu wykorzystania cache ‚u w SSIS jest niezwykle ważny. Domyślnie zaznaczoną opcją jest Full cache. Na samym początku pracy z SSIS raczej mało się zastanawiamy nad tym wyborem, a może on mieć kolosalny wpływ na wydajność.

Typy cache w SSIS
Wybór odpowiedniego sposobu wykorzystania cache ‚u zależny powinien być od danych, które uwzględniamy w przepływie. W przypadku zadania  Lookup mamy zawsze do czynienia z dwoma tabelami, które „dopasowujemy do siebie”. Właściwie logicznie nie robimy niczego innego niż join w T-SQL.
W przypadku joina możemy wyróżnić niejako trzy przypadki:

  1. W tabeli referencyjnej znajdują się wpisy, które w większości lub całości nas interesują.
  2. W tabeli referencyjnej mamy bardzo dużą nadmiarowość. Jest tam wiele nam niepotrzebnych wpisów.
  3. W tabeli podstawowej mamy niewiele wpisów z niepowtarzającymi się odwołaniami do dużej tabeli referencyjnej.

Dla pierwszego przypadku optymalnie będzie wykorzystać opcję Full cache. Pozwoli ona na załadowanie całej zawartości tabeli referencyjnej do cache ‚a. Dzięki temu unikniemy wielokrotnych zapytań do tabeli referencyjnej.
Drugi przypadek prezentuje klasyczne wykorzystanie częściowego cache ‚a. Zapamiętanie w cache wartości z tabeli referencyjnej następuje wtedy, gdy choć raz wystąpiło odwołanie do niej z tabeli źródłowej. Opłacalne wykorzystanie opcji Partial cache to np. sytuacja w której mamy dane źródłowe ze sprzedażą tylko wybranej części produktów (np. 100) a nasza tabela z produktami ma kilkadziesiąt tysięcy wpisów. Opcja Full cache spowodowałaby załadowanie całej kartoteki produktów do cache, natomiast opcja Partial spowoduje załadowanie jedynie 100 wpisów. Należy mieć jednak na uwadze, że na skutek tego ustawienia nastąpi stukrotne zapytanie SELECT do tabeli z towarami.

Dla zobrazowania opcji cachowania tabeli referencyjnej warto spojrzeć w poniższą tabelkę.

*grafiki zaczerpnięte z: https://blogs.msdn.microsoft.com/mattm/2008/10/18/lookup-cache-modes/

A co z identyfikatorami, które nie występują w tabeli referencyjnej? Czy można jakoś zoptymalizować to przeszukiwanie? O tym dowiemy się w drugiej części.

Więcej informacji:

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *