| Termin | Definicja |
|---|---|
| Statystyki dla Columnstore | Statystyki dla Columnstore opisują rozkład danych w kolumnach, wspierając optymalizator przy zapytaniach analitycznych. Rola statystyk w indeksie kolumnowymStatystyki dla Columnstore opisują sposób, w jaki wartości są rozmieszczone w kolumnach przechowywanych w strukturze kolumnowej. Ich zadaniem jest dostarczenie optymalizatorowi zapytań informacji potrzebnych do oszacowania liczby wierszy spełniających warunki filtrowania. Na tej podstawie silnik może wybrać plan wykonania obejmujący między innymi skanowanie wybranych kolumn, ograniczenie odczytu danych albo użycie dodatkowych struktur indeksowych. W klasycznym indeksie wierszowym dane są analizowane przede wszystkim w układzie rekordów i kluczy indeksu. Columnstore organizuje dane inaczej: wartości jednej kolumny są przechowywane razem, zwykle w skompresowanych segmentach należących do grup wierszy. Statystyki muszą więc pomagać nie tylko w określeniu selektywności predykatu, lecz także w ocenie, czy odczyt całego segmentu lub grupy wierszy będzie uzasadniony. Zakres informacji wykorzystywanych przez optymalizatorStatystyka może zawierać między innymi przybliżenie liczby wierszy, liczbę wartości unikatowych, minimum i maksimum oraz histogram opisujący rozkład wartości. Histogram przedstawia przedziały wartości i szacowaną liczbę rekordów przypadających na każdy z nich. Dzięki temu warunek obejmujący niewielki zakres może zostać oceniony inaczej niż predykat pasujący do znacznej części tabeli. W przypadku danych kolumnowych znaczenie ma również rozmieszczenie wartości w segmentach. Jeżeli zakres wartości w danym segmencie nie może spełnić warunku zapytania, możliwe jest zastosowanie eliminacji segmentów, czyli pominięcie tego fragmentu podczas odczytu. Statystyka nie zmienia danych i nie filtruje ich samodzielnie. Dostarcza jedynie modelu rozkładu, na podstawie którego optymalizator przewiduje koszt różnych sposobów wykonania zapytania. Nieaktualne dane a wybór planu wykonaniaUżyteczność statystyk zależy od ich aktualności i zgodności z rzeczywistym rozkładem danych. Po dużych operacjach ładowania, usuwania lub aktualizacji wartości proporcje między przedziałami mogą się zmienić. Dotyczy to szczególnie tabel, do których dane są dopisywane partiami albo w których pojawiają się nowe zakresy wartości. Statystyka utworzona wcześniej może wtedy przedstawiać obraz, który nie odpowiada bieżącej zawartości kolumny. Błędne oszacowanie liczby wierszy może prowadzić do niewłaściwego planu. Silnik może na przykład uznać, że predykat jest bardzo selektywny, chociaż w rzeczywistości pasuje do większości danych, albo odwrotnie. Skutkiem bywają zbyt małe lub zbyt duże przydziały pamięci, nieefektywna kolejność operacji, niepotrzebne odczyty oraz dłuższy czas wykonania zapytania analitycznego. Sama obecność indeksu Columnstore nie gwarantuje poprawnego planu, jeżeli informacje o rozkładzie danych są nieaktualne. Rozróżnienie statystyk i stanu segmentówStatystyki dla Columnstore należy odróżnić od metadanych opisujących fizyczny stan indeksu. Informacje o grupach wierszy, segmentach, liczbie wierszy usuniętych, stanie kompresji lub obecności grup delta służą do oceny organizacji danych i sprawności struktury. Statystyka opisuje natomiast rozkład wartości wykorzystywany przy estymacji selektywności. Oba rodzaje informacji mogą wpływać na analizę wydajności, ale nie są tym samym mechanizmem. Podczas diagnostyki problemu z zapytaniem warto zestawić plan wykonania z rzeczywistą liczbą przetwarzanych wierszy oraz sprawdzić, czy odczytywane segmenty odpowiadają predykatom zapytania. Należy także uwzględnić typ kolumny, sposób ładowania danych, rozmiar grup wierszy i udział rekordów pozostających poza właściwie skompresowaną strukturą. Jeżeli estymacja znacząco różni się od wykonania, przyczyną może być nieaktualna statystyka, nierównomierny rozkład wartości, korelacja między kolumnami albo niekorzystna organizacja segmentów. W środowisku bazodanowym analiza takich objawów wymaga dostępu do planu zapytania, metadanych Columnstore i informacji o zmianach danych; bez tych danych nie da się rzetelnie wskazać jednego źródła problemu. |