| Termin | Definicja |
|---|---|
| Widok sys.column_store_segments | sys.column_store_segments zawiera informacje o segmentach danych indeksu Columnstore. Widok sys.column_store_segments — czym jest ten widok
Znaczenie tego widoku staje się szczególnie widoczne przy analizie tabel zawierających duże zbiory rekordów, raportów agregujących wiele wierszy oraz procesów ładowania danych wykonywanych partiami. W klasycznym indeksie wierszowym podstawową jednostką organizacji jest najczęściej strona danych i struktura drzewa. W indeksie Columnstore dane są natomiast grupowane kolumnami, a segment stanowi część większego układu przeznaczonego do kompresji i przetwarzania analitycznego. Odczyt wyników z Segmenty w sys.column_store_segments a sposób przechowywania danychW indeksie Columnstore rekordy są organizowane w grupy wierszy, a wartości każdej kolumny są przechowywane w odpowiednich segmentach. Taki układ sprzyja odczytywaniu tylko tych kolumn, które są potrzebne w zapytaniu. Jeżeli raport korzysta z kilku pól z szerokiej tabeli, silnik może ograniczyć zakres odczytu, zamiast pobierać całą strukturę wiersz po wierszu. Segmenty są powiązane z grupami wierszy, dlatego analiza ich stanu pomaga ocenić jakość organizacji indeksu. W pełni skompresowany obszar zwykle lepiej wykorzystuje zalety Columnstore niż mały fragment pozostający w formie przeznaczonej do późniejszego uporządkowania. Małe grupy mogą powstawać przy częstych, niewielkich operacjach modyfikacji albo podczas dopisywania danych partiami o nierównym rozmiarze. Przy porównywaniu indeksu wierszowego z Columnstore nie należy kierować się wyłącznie samym rozmiarem obiektu. Liczy się także charakter zapytań. Operacje analityczne, skanowanie wielu rekordów i obliczenia agregujące często korzystają z kolumnowego sposobu zapisu. Z kolei częste wyszukiwanie pojedynczych wierszy, ciągłe aktualizacje oraz krótkie operacje transakcyjne mogą wymagać dodatkowej oceny, ponieważ ich profil obciążenia jest inny. Informacje z sys.column_store_segments i typowe problemy diagnostyczneJednym z częstych problemów jest zbyt duża liczba małych segmentów lub grup wierszy. Taki obraz może wskazywać na sposób zasilania tabeli, w którym dane są dopisywane bardzo małymi partiami. Nie oznacza to automatycznie awarii, lecz może ograniczać stopień kompresji i zwiększać koszt późniejszego przetwarzania. Warto wtedy przeanalizować harmonogram importów, wielkość partii oraz kolejność operacji modyfikujących dane. Innym przypadkiem jest współistnienie danych skompresowanych i obszaru, który nie został jeszcze połączony z główną strukturą Columnstore. Taka sytuacja może występować po ładowaniu danych lub po zmianach wykonywanych na aktywnej tabeli. Przy ocenie nie powinno się wyciągać wniosku na podstawie jednego wiersza widoku. Znaczenie ma rozkład segmentów w obrębie całego indeksu, partycji i przedziału czasu, w którym pojawiły się zmiany. Trudność interpretacyjną stanowi także mylenie problemu segmentów z problemem zapytania. Wolne wykonanie może wynikać z nieodpowiedniego predykatu, konieczności przetworzenia dużego zakresu danych, braku selektywnego ograniczenia wyników albo z konkurencji o zasoby. Sam odczyt z Warto również uważać na różnice wersji silnika oraz poziomu zgodności bazy. Dostępne kolumny, znaczenie stanów i sposób raportowania mogą zależeć od używanej edycji oraz wersji SQL Server. Przy tworzeniu skryptu diagnostycznego należy sprawdzić dokumentację właściwą dla konkretnego środowiska i nie zakładać, że każdy serwer zwróci identyczny zestaw informacji. Praktyczne wskazówki dotyczące sys.column_store_segmentsAnalizę najlepiej rozpocząć od ustalenia, którego indeksu dotyczy problem. Pomocne jest ograniczenie zapytania do wskazanej tabeli, indeksu lub partycji, a następnie porównanie liczby segmentów, ich stanów i zakresów danych. W przypadku dużych baz warto zapisywać wyniki okresowo. Porównanie kilku pomiarów pokazuje, czy struktura pogarsza się stopniowo, czy zmiana pojawiła się po konkretnym procesie importu albo aktualizacji. Przydatne jest prowadzenie prostego dziennika obejmującego datę pomiaru, nazwę obiektu, identyfikator indeksu, partycję, liczbę grup wierszy oraz obserwacje dotyczące obciążenia. Pozwala to odróżnić stałą cechę tabeli od nagłego odchylenia. Dobrą praktyką jest także wykonywanie pomiarów po zakończeniu ładowania danych, a nie w trakcie intensywnej operacji, gdy widok może przedstawiać stan przejściowy. Nie powinno się uruchamiać przebudowy ani reorganizacji wyłącznie dlatego, że w wynikach widoku występują segmenty o różnych właściwościach. Najpierw należy określić, czy rzeczywiście występuje spadek wydajności, wzrost zużycia miejsca lub problem z czasem ładowania. Działanie naprawcze powinno być dobrane do przyczyny i poprzedzone kopią konfiguracji oraz oceną wpływu na bieżące zadania. W środowisku produkcyjnym należy zachować ostrożność przy poleceniach modyfikujących duże indeksy. Trzeba uwzględnić dostępne miejsce, czas blokowania, dzienny cykl raportowy i możliwość odtworzenia poprzedniego stanu. Bezpieczniejsza diagnostyka zaczyna się od zapytań tylko do odczytu, porównania planów oraz sprawdzenia, czy wynik da się odtworzyć na kopii testowej. Kiedy zgłosić się po pomoc z sys.column_store_segmentsWsparcie techniczne może być potrzebne wtedy, gdy interpretacja wyników W przypadku awarii komputera używanego do obsługi bazy, problemów z nośnikiem, niestabilnego działania systemu lub kłopotów z dostępem do danych można skorzystać z pomocy firmy Warszawskie Pogotowie Komputerowe 24/7, kontaktując się telefonicznie pod numerem +48 22 100 48 29. Przed przekazaniem sprzętu warto zabezpieczyć dostępne kopie zapasowe i przygotować opis objawów, aby diagnostyka mogła objąć zarówno warstwę systemową, jak i używane narzędzia bazodanowe. Sam widok |