Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Applies to: SQL Server 2016 (13.x) and later
Azure SQL Database
Azure SQL Managed Instance
Zawiera bieżące informacje na poziomie grupy wierszy dotyczące wszystkich indeksów magazynu kolumn w bieżącej bazie danych.
This DMV extends the catalog view sys.column_store_row_groups.
Column name | Data type | Description |
---|---|---|
object_id |
int | Identyfikator tabeli bazowej. |
index_id |
int | Identyfikator tego indeksu magazynu kolumn w object_id tabeli. |
partition_number |
int | Identyfikator partycji tabeli, która zawiera row_group_id element . Możesz użyć partition_number, aby dołączyć do tego dynamicznego widoku zarządzania sys.partitions |
row_group_id |
int | Identyfikator tej grupy wierszy. W przypadku tabel partycjonowanych wartość jest unikatowa w obrębie partycji.-1 w przypadku ogona w pamięci. |
delta_store_hobt_id |
bigint | Hobt_id dla grupy wierszy w magazynie różnicowym.NULL jeśli grupa wierszy nie znajduje się w magazynie różnicowym.NULL dla części końcowej tabeli w pamięci. |
state |
tinyint | Identyfikator skojarzony z numerem state_description .0 = INVISIBLE 1 = OPEN 2 = CLOSED 3 = COMPRESSED 4 = TOMBSTONE COMPRESSED jest jedynym stanem, który ma zastosowanie do tabel w pamięci. |
state_desc |
nvarchar(60) | Opis stanu grupy wierszy:0
-
INVISIBLE - Grupa wierszy, która jest tworzona. For example:Grupa wierszy w magazynie kolumn jest INVISIBLE podczas kompresowania danych. Po zakończeniu kompresji przełączenie metadanych zmienia stan grupy wierszy magazynu kolumn z INVISIBLE na COMPRESSED , a stan grupy wierszy magazynu delty z CLOSED na TOMBSTONE .1
-
OPEN — Grupa wierszy magazynu różnicowego akceptująca nowe wiersze. Otwarta grupa wierszy jest nadal w formacie magazynu wierszy i nie została skompresowana do formatu magazynu kolumn.2
-
CLOSED - Grupa wierszy w magazynie różnicowym, która zawiera maksymalną liczbę wierszy i oczekuje na proces przerzucania krotki, aby skompresować go do magazynu kolumn.3
-
COMPRESSED — Grupa wierszy skompresowana z kompresją magazynu kolumn i przechowywana w magazynie kolumn.4
-
TOMBSTONE - Grupa wierszy, która była wcześniej w magazynie delty i nie jest już używana. |
total_rows |
bigint | Liczba wierszy przechowywanych fizycznie w grupie wierszy. W przypadku skompresowanych grup wierszy. Zawiera wiersze oznaczone jako usunięte. |
deleted_rows |
bigint | Liczba wierszy przechowywanych fizycznie w skompresowanej grupie wierszy, które są oznaczone do usunięcia.0 dla grup wierszy, które znajdują się w magazynie różnicowym.W przypadku indeksów nieklastrowanych magazynu kolumn ta wartość nie obejmuje usuniętych wierszy przechowywanych w buforze usuwania. For more information, and to find the number of deleted rows in the delete buffer, see sys.internal_partitions. |
size_in_bytes |
bigint | Łączny rozmiar w bajtach wszystkich stron w tej grupie wierszy. Ten rozmiar nie zawiera rozmiaru wymaganego do przechowywania metadanych ani udostępnionych słowników. |
trim_reason |
tinyint | Przyczyna, która wyzwoliła grupę COMPRESSED wierszy, aby mieć mniejszą niż maksymalną liczbę wierszy.0 - UNKNOWN_UPGRADED_FROM_PREVIOUS_VERSION 1 - NO_TRIM 2 - BULKLOAD 3 - REORG 4 - DICTIONARY_SIZE 5 - MEMORY_LIMITATION 6 - RESIDUAL_ROW_GROUP 7 - STATS_MISMATCH 8 - SPILLOVER 9 - AUTO_MERGE |
trim_reason_desc |
nvarchar(60) | Opis elementu trim_reason .0
-
UNKNOWN_UPGRADED_FROM_PREVIOUS_VERSION : Wystąpił podczas uaktualniania z poprzedniej wersji programu SQL Server.1
-
NO_TRIM : Grupa wierszy nie została przycięta. Grupa wierszy została skompresowana z maksymalnie 1 048 576 wierszy. Liczba wierszy może być mniejsza, jeśli podzbiór wierszy został usunięty po zamknięciu grupy wierszy różnicowych2
-
BULKLOAD : Rozmiar partii ładowania zbiorczego ogranicza liczbę wierszy.3
-
REORG : Wymuszona kompresja REORG w ramach polecenia.4
-
DICTIONARY_SIZE : Rozmiar słownika wzrósł zbyt duży, aby skompresować wszystkie wiersze razem.5
-
MEMORY_LIMITATION : Za mało dostępnej pamięci, aby skompresować wszystkie wiersze razem.6
-
RESIDUAL_ROW_GROUP : Zamknięty w ramach ostatniej grupy wierszy z wierszami < 1 milion podczas operacji kompilacji indeksu.Note: A partition build with multiple cores can result in more than one trim of this type. 7
-
STATS_MISMATCH : tylko w przypadku magazynu kolumn w tabeli w pamięci. Jeśli statystyki niepoprawnie wskazują >= 1 milion kwalifikowanych wierszy w ogonie, ale znaleźliśmy mniej, skompresowana grupa wierszy będzie miała < 1 milion wierszy8
-
SPILLOVER : tylko w przypadku magazynu kolumn w tabeli w pamięci. Jeśli ogon ma > 1 milion kwalifikowanych wierszy, ostatnia partia pozostałych wierszy jest kompresowana, jeśli liczba wynosi od 100 000 do 1 miliona9
-
AUTO_MERGE : Operacja scalania krotki Mover uruchomiona w tle skonsolidowana co najmniej jedna grupa wierszy w tej grupie wierszy. |
transition_to_compressed_state |
tinyint | Pokazuje, jak ta grupa wierszy została przeniesiona z magazynu delty do stanu skompresowanego w magazynie kolumn.1 - NOT_APPLICABLE 2 - INDEX_BUILD 3 - TUPLE_MOVER 4 - REORG_NORMAL 5 - REORG_FORCED 6 - BULKLOAD 7 - MERGE |
transition_to_compressed_state_desc |
nvarchar(60) |
1
-
NOT_APPLICABLE — operacja nie ma zastosowania do magazynu delty. Lub grupa wierszy została skompresowana przed uaktualnieniem do programu SQL Server 2016 (13.x), w którym to przypadku historia nie jest zachowywana.2
-
INDEX_BUILD — Indeks tworzy lub kompiluje ponownie skompresowaną grupę wierszy.3
-
TUPLE_MOVER - Krotka mover uruchomiona w tle skompresowała grupę wierszy. Krotka jest wykonywana po zmianie stanu grupy wierszy z OPEN na CLOSED .4
-
REORG_NORMAL — Operacja reorganizacji , ALTER INDEX ... REORG przeniosła grupę CLOSED wierszy z magazynu delty do magazynu kolumn. Miało to miejsce, zanim krotka-mover miała czas na przeniesienie grupy wierszy.5
-
REORG_FORCED — Ta grupa wierszy była otwarta w magazynie delty i została wymusina w magazynie kolumn, zanim zawierała pełną liczbę wierszy.6
-
BULKLOAD - Operacja ładowania zbiorczego skompresowała grupę wierszy bezpośrednio bez użycia magazynu różnicowego.7
-
MERGE — Operacja scalania skonsolidował co najmniej jedną grupę wierszy w tej grupie wierszy, a następnie wykonał kompresję magazynu kolumn. |
has_vertipaq_optimization |
bit | Optymalizacja VertiPaq poprawia kompresję magazynu kolumn przez zmiana kolejności wierszy w grupie wierszy w celu osiągnięcia wyższej kompresji. Ta optymalizacja jest wykonywana automatycznie w większości przypadków. Istnieją dwa przypadki, w których optymalizacja VertiPaq nie jest używana: a. gdy grupa wierszy różnicowych przechodzi do magazynu kolumn i istnieje co najmniej jeden indeks nieklastrowany w indeksie magazynu kolumn — w tym przypadku optymalizacja VertiPaq jest pomijana w celu zminimalizowania zmian indeksu mapowania; b. dla indeksów magazynu kolumn w tabelach zoptymalizowanych pod kątem pamięci. 0 = Nie1 = Tak |
generation |
bigint | Generowanie grup wierszy skojarzone z tą grupą wierszy. |
created_time |
datetime2 | Godzina zegara dla momentu utworzenia tej grupy wierszy.NULL — dla indeksu magazynu kolumn w tabeli w pamięci. |
closed_time |
datetime2 | Godzina zegara dla momentu zamknięcia tej grupy wierszy.NULL — dla indeksu magazynu kolumn w tabeli w pamięci. |
Results
Zwraca jeden wiersz dla każdej grupy wierszy w bieżącej bazie danych.
Permissions
Wymaga CONTROL
uprawnienia do tabeli i uprawnienia VIEW DATABASE STATE
w bazie danych.
Uprawnienia dla programu SQL Server 2022 i nowszych
Wymaga uprawnienia VIEW DATABASE PERFORMANCE STATE
do bazy danych.
Examples
A. Oblicz fragmentację, aby zdecydować, kiedy zreorganizować lub ponownie skompilować indeks magazynu kolumn
W przypadku indeksów magazynu kolumn procent usuniętych wierszy jest dobrą miarą fragmentacji w grupie wierszy. Gdy fragmentacja wynosi 20% lub więcej, usuń usunięte wiersze. Aby uzyskać więcej przykładów, zobacz Optymalizowanie konserwacji indeksu w celu zwiększenia wydajności zapytań i zmniejszenia zużycia zasobów.
Ten przykład łączy się sys.dm_db_column_store_row_group_physical_stats
z innymi tabelami systemowymi, a następnie oblicza Fragmentation
kolumnę jako oszacowanie wydajności każdej grupy wierszy w bieżącej bazie danych. Aby znaleźć informacje dotyczące pojedynczej tabeli, usuń łączniki komentarzy przed WHERE
klauzulą i podaj nazwę tabeli.
SELECT i.object_id,
object_name(i.object_id) AS TableName,
i.name AS IndexName,
i.index_id,
i.type_desc,
CSRowGroups.*,
100 * (ISNULL(deleted_rows, 0)) / NULLIF (total_rows, 0) AS 'Fragmentation'
FROM sys.indexes AS i
INNER JOIN sys.dm_db_column_store_row_group_physical_stats AS CSRowGroups
ON i.object_id = CSRowGroups.object_id
AND i.index_id = CSRowGroups.index_id
-- WHERE object_name(i.object_id) = 'table_name'
ORDER BY object_name(i.object_id), i.name, row_group_id;
Related content
- Widoki wykazu obiektów (Transact-SQL)
- Widoki wykazu systemu (Transact-SQL)
- architektura indeksu magazynu kolumn
- wykonywanie zapytań dotyczących katalogu systemu programu SQL Server — często zadawane pytania
- sys.columns
- sys.all_columns
- sys.computed_columns
- sys.column_store_dictionaries
- sys.column_store_segments