| Termin | Definicja |
|---|---|
| Columnstore Index | Columnstore Index to typ indeksu przechowujący dane w formacie kolumnowym, zoptymalizowanym pod zapytania analityczne. Jak działa przechowywanie danych według kolumnColumnstore Index, czyli indeks kolumnowy, organizuje dane inaczej niż tradycyjny indeks wierszowy. W układzie wierszowym wartości należące do jednego rekordu są przechowywane blisko siebie, dlatego taki sposób dostępu dobrze pasuje do operacji dotyczących pojedynczych rekordów, wyszukiwania konkretnego klucza oraz częstych modyfikacji. Indeks kolumnowy grupuje natomiast wartości z tej samej kolumny. Zapytanie analizujące sprzedaż, daty, ceny albo identyfikatory może odczytać tylko potrzebne kolumny, bez pobierania całych wierszy z pozostałymi polami. W praktyce dane są dzielone na mniejsze struktury określane jako grupy wierszy, a wartości w obrębie kolumn są przetwarzane razem. Taki układ sprzyja kompresji, ponieważ sąsiadujące wartości tego samego typu często mają podobny zakres lub powtarzają się. Silnik bazy danych może dzięki temu zmniejszyć ilość danych przechowywanych i odczytywanych z dysku. Columnstore Index nie jest jednak zwykłym sortowaniem tabeli według jednej kolumny. Jest odrębnym sposobem organizacji danych, dostępu do nich i wykonywania operacji analitycznych. Zapytania analityczne a indeks kolumnowyNajwiększą korzyść z indeksu kolumnowego można uzyskać przy zapytaniach skanujących wiele rekordów, lecz wykorzystujących ograniczony zestaw kolumn. Dotyczy to między innymi obliczania sum, średnich, wartości minimalnych i maksymalnych, grupowania wyników oraz filtrowania dużych zbiorów danych. Jeżeli zapytanie potrzebuje trzech kolumn z tabeli zawierającej ich kilkadziesiąt, format kolumnowy ogranicza zakres odczytu. Mechanizm ten jest szczególnie przydatny w raportowaniu, analizie historii transakcji i przetwarzaniu danych pomiarowych. Wykonanie zapytania zależy jednak od planu wybranego przez optymalizator oraz od charakterystyki danych. Samo utworzenie indeksu kolumnowego nie gwarantuje automatycznego przyspieszenia każdego polecenia. Zapytanie zwracające pojedynczy rekord po unikatowym identyfikatorze może lepiej pasować do indeksu wierszowego. Znaczenie mają również selektywność filtrów, liczba odczytywanych kolumn, rozmiar tabeli, sposób kompresji oraz dostępna pamięć. Ocena wymaga porównania planu wykonania i rzeczywistego czasu pracy przed oraz po zastosowaniu indeksu. Wpływ modyfikacji danych na strukturę indeksuIndeks kolumnowy jest projektowany przede wszystkim z myślą o odczycie, ale może współistnieć z operacjami wstawiania, aktualizowania i usuwania danych. Częste, małe zmiany mogą być obsługiwane inaczej niż duże partie danych. Fragmenty podlegające intensywnym modyfikacjom mogą czasowo zachowywać cechy struktury wierszowej, a późniejsza organizacja lub kompresja pozwala włączyć je do właściwego układu kolumnowego. Szczegółowe zachowanie zależy od konkretnego silnika oraz rodzaju zastosowanego indeksu. Projektując taki indeks, trzeba uwzględnić proporcję między obciążeniem analitycznym i transakcyjnym. Tabela, która jest niemal wyłącznie odczytywana i rośnie dużymi partiami, zwykle lepiej odpowiada modelowi columnstore niż tabela, w której pojedyncze rekordy są bez przerwy zmieniane. Znaczenie ma także aktualność statystyk, rozmiar grup wierszy i stopień fragmentacji. Nieprawidłowo dobrana struktura może zwiększyć koszt zapisu, zużycie miejsca albo czas obsługi zapytań zamiast go ograniczyć. Weryfikacja przyczyn problemów z Columnstore IndexDiagnostyka problemu powinna rozpocząć się od ustalenia, czy zapytanie rzeczywiście wykonuje operacje odpowiednie dla indeksu kolumnowego. Należy sprawdzić plan wykonania, predykaty filtrujące, liczbę skanowanych kolumn oraz ilość odczytanych danych. Warto porównać plan z planem wykorzystującym inne dostępne indeksy, a następnie przeanalizować czas procesora, operacje wejścia i wyjścia oraz zużycie pamięci. Sam komunikat o wolnym zapytaniu nie wskazuje jeszcze, że przyczyną jest uszkodzony indeks. Przy przeglądzie środowiska bazodanowego sprawdza się również, czy struktura nie jest nadmiernie pofragmentowana, czy statystyki odpowiadają aktualnemu rozkładowi danych oraz czy proces ładowania nie tworzy wielu małych, słabo skompresowanych partii. Naprawa może polegać na zmianie projektu indeksu, korekcie zapytania, uporządkowaniu procesu ładowania albo przebudowie struktury zgodnie z możliwościami używanego silnika. Ze względu na serwerowy i enterprise’owy charakter zastosowań Columnstore Index takie działania powinny być prowadzone przez administratora znającego schemat bazy, plan obciążenia i wymagania aplikacji. |