Serwisanci dostępni teraz · czynne całą dobę, także w weekendy i świętaWarszawa i okolice · dojazd bezpłatny
Darmowa diagnoza laptopa
Darmowa diagnoza laptopa
Dojazd do klienta bezpłatnie
Dojazd do klienta bezpłatnie
Laptopy zastępcze bezpłatnie
Laptopy zastępcze bezpłatnie
Odbiór i zwrot sprzętu bezpłatnie
Odbiór i zwrot sprzętu bezpłatnie

Widok sys.column_store_dictionaries

Termin Definicja
Widok sys.column_store_dictionaries

sys.column_store_dictionaries zwraca dane o słownikach kompresji wykorzystywanych przez indeksy Columnstore.

Rola widoku sys.column_store_dictionaries w SQL Server

sys.column_store_dictionaries jest katalogowym widokiem systemowym programu Microsoft SQL Server. Zwraca jeden wiersz dla każdego słownika używanego przez indeks columnstore. Słownik przechowuje mapowanie powtarzających się wartości na identyfikatory, dzięki czemu dane kolumnowe mogą być zapisane w postaci bardziej zwartej niż pełne wartości tekstowe lub liczbowe. Mechanizm ten jest elementem organizacji danych indeksu columnstore, a nie osobnym słownikiem aplikacyjnym tworzonym przez użytkownika.

Widok dotyczy słowników wykorzystywanych do kodowania określonych typów danych. Nie każda kolumna indeksu columnstore musi mieć odpowiadający jej słownik, ponieważ SQL Server dobiera sposób kodowania zależnie od właściwości danych. Dla konkretnej kolumny może występować słownik główny, współdzielony przez segmenty kolumny, oraz słowniki lokalne używane tylko przez część segmentów. Sam wpis w widoku opisuje metadane słownika, a nie listę jego rzeczywistych wartości.

Kolumny opisujące słownik i jego zakres

Kolumna hobt_id typu bigint identyfikuje HoBT, czyli strukturę sterty albo indeksu B-tree powiązaną z tabelą zawierającą indeks columnstore. column_id typu int wskazuje kolumnę columnstore; numerowanie zaczyna się od 1. dictionary_id również ma typ int. Wartość 0 oznacza słownik globalny współdzielony przez segmenty danej kolumny, natomiast inne wartości identyfikują słowniki lokalne związane z określonym zakresem danych.

Pozostałe kolumny pozwalają ocenić format i rozmiar struktury. version określa wersję formatu słownika, a type opisuje jego rodzaj: 1 oznacza słownik haszujący dla wartości typu całkowitego, 3 słownik haszujący dla wartości tekstowych, a 4 słownik haszujący dla wartości zmiennoprzecinkowych. Wartość 2 jest oznaczona w dokumentacji SQL Server jako nieużywana. last_id wskazuje ostatni identyfikator danych w słowniku, entry_count podaje liczbę wpisów, on_disk_size rozmiar słownika w bajtach, a partition_id identyfikuje partycję; ten identyfikator jest unikatowy w obrębie bazy danych.

Łączenie metadanych z indeksami columnstore

Sam widok nie podaje nazwy tabeli ani nazwy indeksu w wygodnej postaci. Aby ustalić, do jakiego obiektu należy słownik, trzeba połączyć jego dane z innymi widokami katalogowymi. hobt_id można zestawić z identyfikatorem HoBT dostępnym w metadanych partycji, a następnie powiązać partycję z tabelą i indeksem. column_id należy interpretować jako numer kolumny w strukturze columnstore, dlatego przy analizie warto porównać go z metadanymi kolumn tabeli oraz z widokiem sys.column_store_segments.

Przykładowe zapytanie diagnostyczne może rozpocząć się od odczytu rozmiaru i liczby wpisów: SELECT hobt_id, column_id, dictionary_id, type, entry_count, on_disk_size, partition_id FROM sys.column_store_dictionaries ORDER BY hobt_id, column_id, dictionary_id;. Wynik trzeba czytać w kontekście grup wierszy i segmentów, ponieważ słownik jest częścią fizycznej organizacji indeksu. Do pełniejszej oceny można zestawić go z sys.column_store_row_groups oraz sys.column_store_segments. Duża liczba lokalnych słowników albo znaczny rozmiar słownika nie jest samodzielnie dowodem uszkodzenia; może wynikać z rozkładu wartości, segmentacji i sposobu kompresji danych.

Uprawnienia i praktyczne wnioski z odczytu

Odczyt metadanych tego widoku podlega zasadom widoczności katalogu systemowego SQL Server. Do przeglądania definicji obiektu wymagana jest odpowiednia zgoda VIEW DEFINITION dotycząca tabeli. Kolumny last_id i entry_count mogą zwracać wartość NULL, jeżeli użytkownik nie ma również uprawnienia SELECT do odpowiedniego obiektu. Brak danych w tych kolumnach nie musi więc oznaczać braku słownika ani problemu z indeksem.

Widok jest przydatny podczas analizy zajętości indeksu columnstore, skuteczności kompresji i różnic między partycjami. Jeżeli rozmiar słowników rośnie, należy porównać go z liczbą wpisów, typem danych, liczbą segmentów oraz charakterem wartości w kolumnie. Warto także odróżnić metadane słowników od bieżącego obciążenia zapytaniami: ten widok nie pokazuje czasu wykonania, blokad ani bezpośredniej przyczyny wolnego zapytania. Takie informacje wymagają użycia odpowiednich statystyk wykonawczych i planów zapytań. Przy diagnostyce indeksu columnstore należy zachować zgodność wersji SQL Server, ponieważ dostępność funkcji i szczegóły obsługi indeksów mogą zależeć od konkretnej wersji silnika.

+48 22 100 48 29Zadzwoń teraz · serwisant w 1 godzinę