Optimizing Data Warehouse Query Performance Through Bitmap Filtering
Większość kwerend magazyn danych zaprojektowano tak, aby wykonać schemat gwiazdy i może przetwarzać setki milionów wierszy w jednej kwerendzie.Domyślnie optymalizator kwerendy wykrywa kwerendy względem schematów gwiazdy i utworzy plany kwerend efektywne dla nich.Jedną z metod Optymalizator służy do generowania efektywnego planu, który jest do korzystania z filtrowania mapy bitowej.Filtr Mapa bitowa używa compact reprezentacji zestaw wartości z tabela w jednej z części drzewa operator, aby odfiltrować wiersze z drugiej tabela w innej części drzewa.W istocie filtr wykonuje semi-łączyć redukcji; oznacza to, przetwarzane są tylko te wiersze w drugiej tabela, które kwalifikują się do łączyć z pierwszej tabela.
W SQL Server 2008, filtrowanie mapy bitowej mogą zostać wprowadzone w planie kwerendy po optymalizacji, podobnie jak w SQL Server 2005, lub dynamicznie wprowadzone przez optymalizator kwerendy podczas generowania planu kwerendy. Jeśli filtr zostanie wprowadzona dynamicznie, to jest określana jako zoptymalizowane filtru mapy bitowej.Filtrowanie zoptymalizowane map bitowych może znacznie poprawić wydajność kwerendy magazyn danych, które za pomocą schematów gwiazdy przez usunięcie innych niż kwalifikujących się wiersze z tabela fakt wczesne planu kwerendy.Bez zoptymalizowane mapy bitowej, filtrowanie, wszystkie wiersze w tabela fakt są przetwarzane przez niektóre części drzewa operator, zanim operacja łączenia z tabelami wymiarów usuwa wiersze nie kwalifikujących się.Po optymalizacji filtrowanie mapy bitowej jest stosowane, natychmiast eliminuje nie kwalifikujących się wierszy w tabela fakt.
Zoptymalizowane mapy bitowej filtrowanie jest dostępne tylko w wersjach systemów Enterprise Developer i oceny SQL Server.
Opis filtrowania map bitowych
Filtr mapy bitowej favorably porównuje mapa bitowa indeksu.Indeks mapy bitowej jest formularz, który zastępczy reprezentujący wiersz listy identyfikator (RID) w indeksie listy wartości, przy użyciu jednego lub więcej kierunków bit wskazujące, który wiersz tabela zawiera określoną wartość kolumna.Może być bardzo skuteczne usuwanie niepotrzebnych wierszy z wynikiem przetwarzania, istnieją jednak istotne różnice między filtru mapy bitowej i indeks mapy bitowej.Po pierwsze filtry map bitowych są struktury znajdującej się w pamięci, eliminując w ten sposób każdy indeks konserwacji obciążenie ze względu na operacje języka (DML) manipulacji danych do tabela podstawowej.Ponadto filtry map bitowych są bardzo małe, a inaczej niż w przypadku istniejących na dysku indeksy, które zazwyczaj zależy od rozmiaru tabela, na którym są one wbudowane, mapa bitowa filtry mogą być tworzone dynamicznie za pomocą ono minimalny wpływ na czas przetwarzania kwerendy.
Porównywanie map bitowych filtrowania z filtrowania zoptymalizowane map bitowych
Mapa bitowa filtrowania i filtrowania zoptymalizowane map bitowych są implementowane w planie kwerendy przy użyciu operator plan wykonania map bitowych.Filtrowanie mapy bitowej jest stosowana tylko w planach równoległych kwerendy, w których wartości mieszania lub korespondencji seryjnej sprzężenia są używane.Filtrowanie zoptymalizowane mapy bitowej jest stosowane tylko do planów kwerendy równoległych mieszania, które są używane sprzężenia.W obu przypadkach filtru mapy bitowej jest tworzony po stronie wejścia (tabela wymiarów) kompilacji łączyć mieszania; jednak rzeczywista filtrowania jest zazwyczaj określany w ramach Proste operator, który znajduje się na sondy dane wejściowe (tabela fakt) po stronie łączyć mieszania.Gdy łączyć jest oparty na kolumnie całkowitą, filtr można zastosować bezpośrednio do wstępnego operację skanowania tabela lub indeksu a nie Proste operator.Ta metoda jest wywoływana. Optymalizacja w wierszu.
Podczas filtrowania mapy bitowej jest wprowadzony w planu kwerendy po optymalizacji, zmniejsza się czas kompilacji kwerendy; jednak planów kwerend, które można uwzględnić Optymalizator są ograniczone, a nie są brane pod uwagę oszacowań kardynalności oraz koszt.
Zoptymalizowane mapy bitowej filtry mają następujące zalety:
Filtrowanie z kilku tabel wymiarów jest obsługiwane.
Do jednego operator można stosować wiele filtrów.
Zoptymalizowane mapy bitowej filtry można stosować do większej liczby typów operator.Należą do nich wymiana operatorów takich jak Dystrybuować strumienie and Strumienie ponownego dzielenia na partycje operatorów, tabela lub operatorów skanowanie indeksu i operatory filtru.
Filtrowanie odnosi się do instrukcji SELECT i operatorów tylko do odczytu używany w INSERT, UPDATE, DELETE i scalania instrukcji.
Filtrowanie jest stosowany do tworzenia widoków indeksowanych w operatory używane do wypełniania indeksu.
Optymalizator używa oszacowań liczebność i koszt do ustalenia, czy filtrowanie zoptymalizowane mapa bitowa jest odpowiednia.
Optymalizator można uwzględnić więcej planów.
W jaki sposób filtrowania zoptymalizowane mapa bitowa jest zaimplementowane
Filtr mapy bitowej jest przydatna tylko wtedy, gdy jest on selektywne.optymalizator kwerendy decyduje o tym, kiedy filtr zoptymalizowane mapy bitowej jest wystarczająco selektywnego, użyteczne i operatory, których stosowany jest filtr.Optymalizator filtry zoptymalizowane map bitowych są umieszczane na wszystkich oddziałów połączenie typu gwiazda i używa wyceny reguł, aby określić, czy plan zapewnia koszt najmniejszą szacowany wykonanie.Filtr zoptymalizowane mapy bitowej jest nonselective, szacowania kosztów zazwyczaj jest zbyt duża i plan jest odrzucany.Biorąc pod uwagę lokalizację filtry zoptymalizowane map bitowych w planie, Optymalizator szuka mieszania łączyć wariantów, takie jak stos głęboko po prawej stronie sprzężeń mieszania.Najpierw wykonać prawdopodobnie najbardziej selektywnego łączyć są realizowane dołączeń tabele wymiarów.
Operator, w których stosowany jest filtr zoptymalizowane mapa bitowa zawiera predykat map bitowych w formularzu PROBE([Opt_Bitmap1001], {[nazwa_kolumny} [, "W WIERSZU „]).Predykat mapy bitowej raporty dotyczące następujących informacji:
Nazwa mapy bitowej, która odpowiada nazwa wprowadzona w Mapa bitowa operator.Prefiks 'Opt_' wskazuje filtr zoptymalizowane mapy bitowej.
kolumna sondowany przed.Jest to punkt, z którego filtrowane dane wczytywane w drzewie.
Czy sondy mapa bitowa używa optymalizacji w wierszu.Gdy jest on sondy mapy bitowej jest wywoływana z parametrem wiersz W.W przeciwnym wypadku ten parametr jest brak.
Przykład
Poniższy przykład przedstawia kwerenda na proste schemat gwiazdy.Wymiar dwóch tabel DimProduct i DimCustomer Dołącz do tabela fakt FactInternetSales za pomocą łączyć podstawowy klucz do klucz obcego kolumna jednej liczby całkowitej.
USE AdventureWorksDW;
GO
SELECT *
FROM dbo.FactInternetSales AS F
INNER JOIN dbo.DimProduct AS D1 ON F.ProductKey = D1.ProductKey
INNER JOIN dbo.DimCustomer AS D2 ON F.CustomerKey = D2.CustomerKey
WHERE D1.StandardCost <= 30 AND D2.YearlyIncome <= 50000;
Na poniższym rysunku przedstawiono plan wykonania dla tej kwerendy może się pojawić SQL Server 2005. W punktach oznaczone 1A tabele wymiarów zostały przeskanowane i informacje niezbędne do odfiltrowywania nie kwalifikujących się wiersze z tabela fakt (1B) jest znana.Jednak właściwości Skanowanie tabela operator pokazać, że predykat nie jest używana w celu ograniczenia liczby wierszy zwracanych z tabela fakt.
Z drugiej strony na poniższej ilustracji przedstawiono plan wykonania o tej samej kwerendy, co może się pojawić SQL Server 2008. Operatory zoptymalizowane map bitowych są stosowane w poddrzewa obie tabele wymiarów.Właściwości tabela skanowania operator wskazują, że filtry te poddrzewa (mapa bitowa sondy) są stosowane bezpośrednio do tabela fakt drzewa, aby ograniczyć liczbę wierszy zwracanych z tabela fakt przed wykonaniem pierwszej operacji łączyć.
Zoptymalizowane wymagania filtrowania map bitowych
Filtrowanie zoptymalizowane mapa bitowa ma następujące wymagania:
Tabele fakt powinny mieć co najmniej 100 stron.Optymalizator bierze pod uwagę mniejsze tabele, które mają być tabele wymiarów.
Tylko są uważane za sprzężeń wewnętrznych między tabeli fakt i tabela wymiarów.
Predykat łączyć między tabela faktów i musi być pojedyncza kolumna łączyć tabela wymiarów, ale nie musi być podstawowy klucz do klucz obcego relacji.Jest to kolumna na liczbę całkowitą.
Sprzężenia z wymiarami tylko są uwzględniane podczas wprowadzania cardinalities wymiaru są mniejsze niż wejściowy relacja z tabela fakt.