Udostępnij przez


sys.column_store_row_groups (Transact-SQL)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBaza danych SQL w usłudze Microsoft Fabric

Udostępnia informacje o indeksie magazynu kolumn dla poszczególnych segmentów.

W przypadku klastrowanych indeksów sys.column_store_row_groups magazynu kolumn zawiera kolumnę zawierającą całkowitą liczbę wierszy przechowywanych fizycznie (w tym oznaczonych jako usunięte) oraz kolumnę dla liczby wierszy oznaczonych jako usunięte. Użyj sys.column_store_row_groups polecenia , aby określić, które grupy wierszy mają wysoki procent usuniętych wierszy i powinny zostać ponownie skompilowane.

Nazwa kolumny Typ danych Description
object_id int Identyfikator tabeli, na której zdefiniowano ten indeks.
index_id int Identyfikator indeksu magazynu kolumn.
partition_number int Partycja tabeli zawierająca grupę wierszy zidentyfikowaną przez row_group_idelement . Użyj partition_number polecenia , aby dołączyć plik sys.partitions.
row_group_id int Numer grupy wiersza przypisany tej grupie. Ta liczba jest unikatowa w ramach partycji.

-1 = ogon tabeli zoptymalizowanej pod kątem pamięci.
delta_store_hobt_id bigint Element hobt_id dla OPEN grupy wierszy w magazynie różnicowym.

Wartość NULL, jeśli grupa wierszy nie znajduje się w magazynie różnicowym.

Wartość NULL dla końca tabeli zoptymalizowanej pod kątem pamięci.
state tinyint Liczba opisująca stan grupy wierszy.

0 = INVISIBLE

1 = OPEN

2 = CLOSED

3 = COMPRESSED

4 = TOMBSTONE
state_description nvarchar(60) Opis stanu grupy wierszy:

INVISIBLE — Ukryty skompresowany segment w procesie kompilowania danych w magazynie różnicowym. Akcje odczytu używają magazynu różnicowego do momentu ukończenia niewidocznego skompresowanego segmentu. Następnie nowy segment staje się widoczny, a źródłowy zapis delta jest usuwany.

OPEN - Grupa wierszy odczytu/zapisu akceptująca nowe wiersze. Otwarta grupa wierszy jest nadal w formacie magazynu wierszy i nie jest kompresowana do formatu magazynu kolumn.

CLOSED - Wypełniona grupa wierszy, ale jeszcze nie skompresowana przez proces przełączania krotki.

COMPRESSED - Grupa wierszy wypełniona i skompresowana.
total_rows bigint Łączna liczba wierszy fizycznie zapisanych w grupie wierszy. Usunięte wiersze mogą być nadal przechowywane. Maksymalna liczba wierszy w grupie wierszy wynosi 1048 576.
deleted_rows bigint Łączna liczba wierszy w grupie wierszy, które są oznaczone jako usunięte, ale pozostają przechowywane. Ta wartość jest zawsze 0 dostępna dla grup wierszy różnicowych.

W przypadku indeksów nieklastrowanych magazynu kolumn ta wartość nie obejmuje usuniętych wierszy przechowywanych w buforze usuwania. Aby uzyskać więcej informacji i znaleźć liczbę usuniętych wierszy w buforze usuwania, zobacz sys.internal_partitions.
size_in_bytes bigint Rozmiar w bajtach wszystkich danych w tej grupie wierszy (bez metadanych lub udostępnionych słowników) zarówno dla magazynów różnicowych, jak i grup wierszy magazynu kolumn.

Uwagi

Zwraca jeden wiersz dla każdej grupy wierszy magazynu kolumn dla każdej partycji każdej tabeli z klastrowanym lub nieklastrowanym indeksem magazynu kolumn.

Użyj polecenia sys.column_store_row_groups , aby dowiedzieć się, ile wierszy znajduje się w grupie wierszy i rozmiarze grupy wierszy.

Gdy liczba usuniętych wierszy w grupie wierszy rośnie do dużego procentu wszystkich wierszy, tabela staje się mniej wydajna. Przebuduj indeks columnstore, aby zmniejszyć rozmiar tabeli, zmniejszając ilość wejścia i wyjścia na dysku potrzebną do odczytu tabeli. Aby ponownie skompilować indeks magazynu kolumn, użyj REBUILD klauzuli instrukcji ALTER INDEX .

Magazyn kolumn z możliwością aktualizacji najpierw wstawia nowe dane do otwartej grupy wierszy, która jest w formacie magazynu wierszy, a czasami jest nazywana tabelą różnicową. Po zapełnieniu otwartej grupy wierszy jego stan zmieni się na CLOSED. Zamknięta grupa wierszy jest kompresowana do formatu magazynu kolumn przez krotkę, a stan zmienia się na COMPRESSED. Przesuwacz krotek to proces w tle, który okresowo budzi się i sprawdza, czy istnieją zamknięte grupy wierszy gotowe do kompresji do grupy wierszy columnstore. Mover krotki powoduje również cofnięcie przydziału wszystkich grup wierszy, w których każdy wiersz jest usuwany. Cofnięto przydział grup wierszy są oznaczone jako TOMBSTONE. Aby natychmiast uruchomić krotkę REORGANIZE mover, użyj klauzuli instrukcji ALTER INDEX .

Gdy grupa wierszy magazynu kolumn zostanie wypełniona, zostanie skompresowana i przestanie akceptować nowe wiersze. Po usunięciu wierszy z skompresowanej grupy pozostają one, ale są oznaczone jako usunięte. Aktualizacje grupy skompresowanej są realizowane jako usunięcie z grupy skompresowanej oraz wstawienie do grupy otwartej.

Permissions

Zwraca informacje o tabeli, jeśli użytkownik ma VIEW DEFINITION do niej uprawnienia.

Widoczność metadanych w widokach katalogu jest ograniczona do obiektów, których właścicielem jest użytkownik lub w stosunku do których użytkownik ma jakieś uprawnienia. Aby uzyskać więcej informacji, zobacz Konfiguracja widoczności metadanych.

Przykłady

Poniższy przykład łączy sys.column_store_row_groups widok i inne widoki systemowe w celu zwrócenia informacji o klastrowanych indeksach magazynu kolumn. Kolumna percent_full jest oszacowaniem wydajności grupy wierszy.

SELECT i.object_id,
       OBJECT_SCHEMA_NAME(i.object_id) AS schema_name,
       OBJECT_NAME(i.object_id) AS table_name,
       i.name AS index_name,
       i.type_desc AS index_type_desc,
       rg.partition_number,
       rg.row_group_id,
       rg.state_description,
       rg.total_rows,
       rg.deleted_rows,
       rg.size_in_bytes,
       100 * (rg.total_rows - ISNULL(rg.deleted_rows, 0)) / total_rows AS percent_full
FROM sys.indexes AS i
     INNER JOIN sys.column_store_row_groups AS rg
         ON i.object_id = rg.object_id
        AND i.index_id = rg.index_id
WHERE INDEXPROPERTY(i.object_id, i.name, 'IsClustered') = 1
ORDER BY schema_name, table_name, index_name, row_group_id;

Aby uzyskać więcej informacji, zobacz Sprawdzanie fragmentacji indeksu magazynu kolumn.