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.
Dotyczy: SQL Server 2016 (13.x) i nowszych
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.
Spowoduje to rozszerzenie widoku wykazu sys.column_store_row_groups (Transact-SQL).
Nazwa kolumny | Typ danych | Opis |
---|---|---|
object_id | int | Identyfikator tabeli bazowej. |
index_id | int | Identyfikator tego indeksu magazynu kolumn w tabeli object_id. |
partition_number | int | Identyfikator partycji tabeli, która zawiera row_group_id. Możesz użyć partition_number, aby dołączyć ten dynamiczny widok zarządzania do folderu sys.partitions. |
row_group_id | int | Identyfikator tej grupy wierszy. W przypadku tabel partycjonowanych wartość jest unikatowa w obrębie partycji. -1 dla ogona w pamięci. |
delta_store_hobt_id | bigint | Hobt_id dla 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 w pamięci. |
stanu | tinyint | Numer identyfikatora skojarzony state_description. 0 = NIEWIDOCZNE 1 = OTWÓRZ 2 = ZAMKNIĘTE 3 = SKOMPRESOWANE 4 = TOMBSTONE SKOMPRESOWANY jest jedynym stanem, który ma zastosowanie do tabel w pamięci. |
state_desc | nvarchar(60) | Opis stanu grupy wierszy: 0 — NIEWIDOCZNA grupa wierszy -A, która jest tworzona. Na przykład: Grupa wierszy w magazynie kolumn jest NIEWIDOCZNA, gdy dane są kompresowane. Po zakończeniu kompresji przełączenie metadanych zmienia stan grupy wierszy magazynu kolumn z NIEWIDZIALNY na SKOMPRESOWANY, a stan grupy wierszy magazynu różnicowego z ZAMKNIĘTE na TOMBSTONE. 1 — OTWÓRZ — grupa wierszy magazynu delty akceptująca nowe wiersze. Otwarta grupa wierszy jest nadal w formacie magazynu wierszy i nie została skompresowana do formatu magazynu kolumn. 2 — ZAMKNIĘTE — grupa wierszy w magazynie różnicowym, która zawiera maksymalną liczbę wierszy i czeka na proces krotki mover, aby skompresować go do magazynu kolumn. 3 — SKOMPRESOWANA — 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. |
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ę wierszy SKOMPRESOWANE, aby mieć mniejszą niż maksymalną liczbę wierszy. 0 — UNKNOWN_UPGRADED_FROM_PREVIOUS_VERSION 1 — NO_TRIM 2 — ŁADOWANIE ZBIORCZE 3 — REORG 4 — DICTIONARY_SIZE 5 — MEMORY_LIMITATION 6 — RESIDUAL_ROW_GROUP 7 — STATS_MISMATCH 8 — WYCIEK 9 — AUTO_MERGE |
trim_reason_desc | nvarchar(60) | Opis 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óżnicowych 2 — BULKLOAD: Rozmiar partii ładowania zbiorczego ogranicza liczbę wierszy. 3 — REORG: Wymuszona kompresja w ramach polecenia REORG. 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ęte w ramach ostatniej grupy wierszy z wierszami < 1 milion podczas operacji kompilacji indeksu. Uwaga: kompilacja partycji z wieloma rdzeniami może spowodować więcej niż jedno przycinanie tego typu. 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 wierszy 8 — 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 do 1 miliona 9 — 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 — ŁADOWANIE ZBIORCZE 7 — SCALANIE |
transition_to_compressed_state_desc | nvarchar(60) | 1 — NOT_APPLICABLE — operacja nie ma zastosowania do magazynu różnicowego. Lub grupa wierszy została skompresowana przed uaktualnieniem do programu SQL Server 2016 (13.x), w którym przypadku historia nie jest zachowywana. 2 — INDEX_BUILD — indeks utwórz lub skompiluj ponownie indeks skompresowany grupy wierszy. 3 — TUPLE_MOVER — krotka uruchomiona w tle skompresowała grupę wierszy. Przejście krotki odbywa się po zmianie stanu grupy wierszy z OPEN na CLOSED. 4 - REORG_NORMAL - Operacja reorganizacji, ALTER INDEX ... REORG przeniesiono zamkniętą grupę wierszy z magazynu różnicowego 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 wymusiona do magazynu kolumn, zanim zawierała pełną liczbę wierszy. 6 — BULKLOAD — operacja ładowania zbiorczego skompresowała grupę wierszy bezpośrednio bez użycia magazynu delty. 7 — MERGE — operacja scalania skonsolidował co najmniej jedną grupę wierszy w tej grupie wierszy, a następnie wykonano 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, aby zminimalizować zmiany indeksu mapowania; b. dla indeksów magazynu kolumn w tabelach zoptymalizowanych pod kątem pamięci. 0 = nie 1 = Tak |
generowania | 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. |
Wyniki
Zwraca jeden wiersz dla każdej grupy wierszy w bieżącej bazie danych.
Uprawnienia
Wymaga CONTROL
uprawnienia do tabeli i uprawnienia VIEW DATABASE STATE
w bazie danych.
Uprawnienia dla programu SQL Server 2022 i nowszych
Wymaga uprawnienia WYŚWIETL STAN WYDAJNOŚCI BAZY DANYCH dla bazy danych.
Przykłady
Odp. 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 Reorganize and Rebuild Indexes.
Ten przykład łączy sys.dm_db_column_store_row_group_physical_stats z innymi tabelami systemowymi, a następnie oblicza kolumnę Fragmentation
jako oszacowanie wydajności każdej grupy wierszy w bieżącej bazie danych. Aby znaleźć informacje na temat pojedynczej tabeli, usuń łączniki komentarzy przed klauzulą WHERE 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
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;
Zobacz też
widoki wykazu obiektów (Transact-SQL)
Widoki Katalogu (Transact-SQL)
architektura indeksu magazynu kolumn
wykonywanie zapytań dotyczących katalogu systemu programu SQL Server — często zadawane pytania
sys.columns (Transact-SQL)
sys.all_columns (Transact-SQL)
sys.computed_columns (Transact-SQL)
sys.column_store_dictionaries (Transact-SQL)
sys.column_store_segments (Transact-SQL)