Udostępnij za pośrednictwem


Optymalizacja wydajności kwerendy magazynu danych poprzez filtrowanie bitmapy

Większość kwerend magazyn danych są zaprojektowane do wykonaj schemat gwiazdy i może przetwarzać setki milionów wierszy w jednej kwerendzie.Domyślnie optymalizator kwerendy wykrywa kwerend gwiazdy schematów i tworzy planów kwerend skuteczne dla nich.Jedna metoda Optymalizator służy do generowania efektywnego planu jest filtrowanie bitmapy.Filtr mapy bitowej używa compact reprezentacja zestaw wartości z tabela w jednej części drzewa operator, aby odfiltrować wiersze z drugiej tabela w innej części drzewa.W istocie filtr wykonuje redukcji semi-łączyć; oznacza to, że przetwarzane są tylko wiersze z drugiej tabela, które kwalifikują się do łączyć w pierwszej tabela.

W SQL Server 2008, filtrowanie bitmapy mogą zostać wprowadzone w planie kwerendy po optymalizacji, jak w SQL Server 2005, lub dynamicznie wprowadzonych przez optymalizator kwerendy w trakcie generowania planu kwerend.Gdy filtr zostanie wprowadzona dynamicznie, mówi się jako Zoptymalizowane filtr bitmap.Filtrowanie zoptymalizowane bitmap może znacznie poprawić wydajność kwerendy magazyn danych używających schematów gwiazdy, usuwając wiersze kwalifikujących się tabela fakt wczesnego planu kwerend.Bez zoptymalizowane bitmapy filtrowanie wszystkich wierszy w tabela fakt są przetwarzane przez część drzewa operator przed operacji łączyć z tabel wymiar usuwa wiersze kwalifikujących się.Podczas filtrowania zoptymalizowane bitmapy jest stosowane, wiersze kwalifikujących się w tabela fakt są eliminowane natychmiast.

Zoptymalizowane bitmapy filtrowanie jest dostępne tylko na wersje Enterprise Developer i oceny SQL Server.

Opis filtrowanie bitmapy

Filtr mapy bitowej favorably porównuje mapa bitowa indeksu.Indeks mapy bitowej jest alternatywny odpowiadające list identyfikator (RID) wierszy w indeksie wartość listy przy użyciu wektory bitowe wskazujące, który wiersz tabela zawiera wartość kolumna.Może być bardzo skuteczne w usuwaniu zbędne wiersze z wynikiem przetwarzania; Istnieją jednak istotne różnice między filtrem mapy bitowej indeksu mapy bitowej.Po pierwsze, są filtry bitmapy w pamięci struktury, eliminując wszelkie indeksu konserwacji napowietrznych z operacjami danych manipulation language (DML) wprowadzone w tabela źródłowa.Ponadto filtry bitmapy są bardzo małe, i w przeciwieństwie do istniejących na dysku indeksy, które zwykle zależy od rozmiaru tabela one zbudowane, bitmapy filtry mogą być tworzone dynamicznie za minimalny wpływ na czas przetwarzania kwerendy.

Porównanie mapy bitowej filtrowanie z filtrowania zoptymalizowane bitmapy

Bitmapy filtrowania i filtrowania zoptymalizowane bitmapy są implementowane w plan kwerend przy użyciu mapy bitowej operator plan wykonania.Filtrowanie bitmapy jest stosowane tylko w przypadku planów kwerend równolegle, w których mieszania lub scalania sprzężenia są używane.Filtrowanie zoptymalizowane bitmapy stosuje się jedynie do planów kwerend równoległych mieszania, które są używane sprzężenia.W obu przypadkach filtr bitmap jest tworzony na kompilacji wejściowe ( tabela wymiarów) boku hash łączyć; Jednakże rzeczywista filtrowanie odbywa się zwykle w równoległości prostych operator na wprowadzania sondy ( tabela fakt) boczne łączyć mieszania.Gdy łączyć jest oparty na kolumnie całkowitą filtr można zastosować bezpośrednio do zainicjowania operacji skanowania tabela lub indeksu raczej niż Parallelism operator.Ta technika jest zwana optymalizacji w wierszu.

Gdy filtrowanie mapy bitowej jest wprowadzony plan kwerend po optymalizacji, czas kompilacji kwerendy jest zmniejszone; Jednakże planów kwerend, które można rozważyć Optymalizator są ograniczone i szacunki Kardynalność i kosztów nie są brane pod uwagę.

Zoptymalizowane bitmapy filtry mają następujące zalety:

  • Filtrowanie z kilku tabel wymiar jest obsługiwane.

  • Wiele filtrów mogą dotyczyć jednego operator.

  • Filtry zoptymalizowane bitmapy można stosować do większej liczby typów operator.Obejmują one wymiany operatorów, takich jak strumieni Rozłóż i strumieni ponownego dzielenia na partycje operatorów, Operatorzy skanowanie tabela lub indeksu i Operatorzy filtru.

  • Filtrowanie ma zastosowanie do instrukcji SELECT i operatorów tylko do odczytu używane w INSERT, UPDATE, DELETE i scalania sprawozdania.

  • Filtrowanie ma zastosowanie do tworzenia widoków indeksowanych w operatory używane do wypełniania indeksu.

  • Optymalizator używa szacunki Kardynalność i koszt czy filtrowanie zoptymalizowane bitmapy został odpowiedni.

  • Optymalizator można rozważyć więcej planów.

Jak filtrowanie zoptymalizowane mapy bitowej jest zaimplementowana

Filtr mapy bitowej jest przydatny tylko wtedy, gdy jest selektywne.optymalizator kwerendy określa, kiedy filtr zoptymalizowane bitmap jest wystarczająco selektywne, użyteczne i operatorów, których stosowany jest filtr.Optymalizator umieszcza filtry zoptymalizowane bitmapy na wszystkie oddziały sprzężenie typu gwiazda i używa wyceny zasady w celu ustalenia czy plan zapewnia najmniejszą liczbę szacowany koszt realizacji.Gdy filtr zoptymalizowane bitmap jest nonselective, szacowania kosztów zazwyczaj jest zbyt wysoka i plan jest odrzucany.Rozważając miejsce filtry zoptymalizowane bitmapy w planie Optymalizator szuka mieszania łączyć warianty, takich jak stos głębokiego prawo sprzężeń mieszania.Najpierw wykonać prawdopodobnie najbardziej selektywne łączyć są realizowane dołączeń tabele wymiar.

Predykat bitmapy w formularzu SONDY zawiera operator, w których stosowany jest filtr zoptymalizowane bitmap ([Opt_Bitmap1001] {[column_name} [, "W wierszu"]).Predykat bitmapowych raporty dotyczące następujących informacji:

  • Nazwa mapy bitowej, który odpowiada nazwie wprowadzone w Bitmap operator.Prefiks 'opt_' Wskazuje filtr zoptymalizowane bitmap.

  • Kolumna sondowany przeciwko.Jest to punkt, z którego filtrowanych danych przepływa przez drzewo.

  • Czy sondy mapa bitowa używa optymalizacji w wierszu.Gdy jest on sondy mapy bitowej jest wywoływana z parametrem w wierszu.W przeciwnym wypadku ten parametr jest brak.

Przykład

Poniższy przykład przedstawia zapytanie prostego schemat gwiazdy.Wymiar dwóch tabel DimProduct i DimCustomer przyłączyć do tabela fakt FactInternetSales za pomocą łączyć klucz do obcy klucz podstawowego na całkowitą pojedynczej kolumna.

USE AdventureWorksDW2008R2;
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ższej ilustracji przedstawiono plan wykonania dla tej kwerendy, może pojawiać się w SQL Server 2005.W punktach oznaczone 1A tabele wymiar zostały przeskanowane i informacje niezbędne do odfiltrowywania-kwalifikujących się wiersze z tabela fakt (1B) jest znany.Jednakże właściwości Table Scan operator pokazać, że predykat nie jest używany do liczbę wierszy zwracanych z tabela fakt.

Plan zapytania programu SQL Server bez filtrów map bitowych.

Natomiast na poniższej ilustracji przedstawiono plan wykonania tej samej kwerendzie może pojawiać się w SQL Server 2008.Operatorzy zoptymalizowane bitmapy są używane w poddrzew obie tabele wymiar.Właściwości tabeli skanowania operator pokazują, że filtry (mapa bitowa sond) z poddrzew te są stosowane bezpośrednio do tabela fakt liczbę wierszy zwracanych z drzewa tabela fakt przed wykonaniem pierwszej operacji łączyć.

Plan zapytania programu SQL Server z filtrami map bitowych.

Zoptymalizowane wymagania filtrowania bitmapy

Filtrowanie zoptymalizowane bitmapy ma następujące wymagania:

  • Tabele faktów powinny mieć co najmniej 100 stron.Optymalizator uważa mniejsze tabele do tabel wymiar.

  • Sprzężeń wewnętrznych tylko między tabela fakt i są uznawane za tabela wymiarów.

  • Predykat łączyć między tabela fakt i tabela wymiarów musi być pojedyncza kolumna łączyć, ale nie musi być podstawowy klucz do-relacja klucz obcego.kolumna oparte na całkowitą jest preferowana.

  • Sprzężenia z wymiarami są jedynie uważane za podczas wprowadzania cardinalities wymiar są mniejsze niż Kardynalność wejściowego z tabela fakt.