Dela via


sys.dm_db_column_store_row_group_physical_stats (Transact-SQL)

gäller för: SQL Server 2016 (13.x) och senare Azure SQL DatabaseAzure SQL Managed Instance

Innehåller aktuell information på radgruppsnivå om alla kolumnlagringsindex i den aktuella databasen.

Detta utökar katalogvyn sys.column_store_row_groups (Transact-SQL).

Kolumnnamn Datatyp Beskrivning
object_id int ID för den underliggande tabellen.
index_id int ID för det här kolumnlagringsindexet i object_id tabell.
partition_number int ID för tabellpartitionen som innehåller row_group_id. Du kan använda partition_number för att ansluta denna DMV till sys.partitioner.
row_group_id int ID för den här radgruppen. För partitionerade tabeller är värdet unikt i partitionen.

-1 för minnesintern svans.
delta_store_hobt_id bigint Hobt_id för en radgrupp i deltaarkivet.

NULL om radgruppen inte finns i deltaarkivet.

NULL för slutet av en minnesintern tabell.
tillstånd tinyint ID-nummer associerat state_description.

0 = OSYNLIG

1 = ÖPPNA

2 = STÄNGD

3 = KOMPRIMERAD

4 = TOMBSTONE

COMPRESSED är det enda tillstånd som gäller för minnesinterna tabeller.
state_desc nvarchar(60) Beskrivning av radgruppstillståndet:

0 – OSYNLIG -A radgrupp som skapas. Till exempel:
En radgrupp i kolumnarkivet är OSYNLIG medan data komprimeras. När komprimeringen är klar ändrar en metadataväxel status för kolumnlagringsradgruppen från OSYNLIG till KOMPRIMERAD och tillståndet för deltastore-radgruppen från STÄNGD till TOMBSTONE.

1 – ÖPPNA – En deltastore-radgrupp som accepterar nya rader. En öppen radgrupp är fortfarande i radarkivformat och har inte komprimerats till kolumnarkivformat.

2 – STÄNGD – En radgrupp i deltaarkivet som innehåller det maximala antalet rader och väntar på att tuppelns flyttprocess ska komprimera den till kolumnarkivet.

3 – KOMPRIMERAD – En radgrupp som komprimeras med kolumnlagringskomprimering och lagras i kolumnarkivet.

4 – TOMBSTONE – en radgrupp som tidigare fanns i deltaarkivet och som inte längre används.
total_rows bigint Antal rader som lagras fysiskt i radgruppen. För komprimerade radgrupper. Innehåller de rader som har markerats som borttagna.
deleted_rows bigint Antal rader som lagras fysiskt i en komprimerad radgrupp som har markerats för borttagning.

0 för radgrupper som finns i deltaarkivet.
size_in_bytes bigint Kombinerad storlek i byte för alla sidor i den här radgruppen. Den här storleken inkluderar inte den storlek som krävs för att lagra metadata eller delade ordlistor.
trim_reason tinyint Orsak som utlöste att gruppen KOMPRIMERAD rad hade mindre än det maximala antalet rader.

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) Beskrivning av trim_reason.

0 – UNKNOWN_UPGRADED_FROM_PREVIOUS_VERSION: Inträffade vid uppgradering från den tidigare versionen av SQL Server.

1 – NO_TRIM: Radgruppen trimmades inte. Radgruppen komprimerades med högst 1 048 576 rader. Antalet rader kan vara mindre om en delmängd rader har tagits bort efter att delta rowgroup stängdes

2 – BULKLOAD: Batchstorleken för massinläsning begränsade antalet rader.

3 – REORG: Tvingad komprimering som en del av REORG-kommandot.

4 – DICTIONARY_SIZE: Ordlistestorleken blev för stor för att komprimera alla rader tillsammans.

5 – MEMORY_LIMITATION: Inte tillräckligt med ledigt minne för att komprimera alla rader tillsammans.

6 – RESIDUAL_ROW_GROUP: Stängdes som en del av den sista radgruppen med rader < 1 miljon under indexgenereringsåtgärden. Obs! En partitionsversion med flera kärnor kan resultera i mer än en trimning av den här typen.

7 – STATS_MISMATCH: Endast för columnstore i minnesintern tabell. Om statistik felaktigt anges >= 1 miljon kvalificerade rader i svansen men vi hittade färre, kommer den komprimerade radgruppen att ha < 1 miljon rader

8 – SPILLOVER: Endast för columnstore i minnesintern tabell. Om tail har > 1 miljon kvalificerade rader komprimeras de sista återstående raderna i batchen om antalet är mellan 100 000 och 1 miljon

9 – AUTO_MERGE: En sammanslagningsåtgärd för tupplar som körs i bakgrunden konsoliderade en eller flera radgrupper i den här radgruppen.
transition_to_compressed_state tinyint Visar hur den här radgruppen flyttades från deltaarkivet till ett komprimerat tillstånd i kolumnarkivet.

1- NOT_APPLICABLE

2 – INDEX_BUILD

3 – TUPLE_MOVER

4 – REORG_NORMAL

5 – REORG_FORCED

6 – BULKLOAD

7 – SAMMANSLAGNING
transition_to_compressed_state_desc nvarchar(60) 1 – NOT_APPLICABLE – åtgärden gäller inte för deltaarkivet. Eller så komprimerades radgruppen innan den uppgraderades till SQL Server 2016 (13.x) i vilket fall historiken inte bevaras.

2 – INDEX_BUILD – En ombyggnad av indexet eller indexet komprimerade radgruppen.

3 – TUPLE_MOVER – Tuppeln som körs i bakgrunden komprimerade radgruppen. Tuppelns mover inträffar när radgruppen ändrar tillstånd från OPEN till CLOSED.

4 - REORG_NORMAL - Omorganiseringsåtgärden, ALTER INDEX ... REORG, flyttade den stängda radgruppen från deltaarkivet till kolumnarkivet. Detta inträffade innan tuppeln-mover hade tid att flytta radgruppen.

5 – REORG_FORCED – Den här radgruppen var öppen i deltaarkivet och tvingades in i kolumnarkivet innan den hade ett fullständigt antal rader.

6 – BULKLOAD – En massinläsningsåtgärd komprimerade radgruppen direkt utan att använda deltaarkivet.

7 – MERGE – En sammanslagningsåtgärd konsoliderade en eller flera radgrupper i den här radgruppen och utförde sedan kolumnlagringskomprimering.
has_vertipaq_optimization lite VertiPaq-optimering förbättrar kolumnlagringskomprimering genom att ordna om ordningen på raderna i radgruppen för att uppnå högre komprimering. Den här optimeringen sker automatiskt i de flesta fall. Det finns två fall där VertiPaq-optimering inte används:
a. när en deltaradgrupp flyttas till kolumnarkivet och det finns ett eller flera icke-grupperade index i kolumnlagringsindexet – i det här fallet hoppas VertiPaq-optimering över för att minimera ändringar i mappningsindexet.
b) för columnstore-index på minnesoptimerade tabeller.

0 = Nej

1 = Ja
generation bigint Radgruppgenerering som är associerad med den här radgruppen.
created_time datetime2 Klocktid för när den här radgruppen skapades.

NULL – för ett columnstore-index i en minnesintern tabell.
closed_time datetime2 Klocktid för när den här radgruppen stängdes.

NULL – för ett columnstore-index i en minnesintern tabell.

Resultat

Returnerar en rad för varje radgrupp i den aktuella databasen.

Behörigheter

Kräver CONTROL behörighet i tabellen och VIEW DATABASE STATE behörighet för databasen.

Behörigheter för SQL Server 2022 och senare

Kräver behörigheten VISA DATABASPRESTANDATILLSTÅND för databasen.

Exempel

A. Beräkna fragmentering för att bestämma när ett kolumnlagringsindex ska organiseras om eller återskapas.

För kolumnlagringsindex är procentandelen borttagna rader ett bra mått för fragmenteringen i en radgrupp. När fragmenteringen är 20% eller mer tar du bort de borttagna raderna. Fler exempel finns i Omorganisera och återskapa index.

Det här exemplet kopplar sys.dm_db_column_store_row_group_physical_stats till andra systemtabeller och beräknar sedan kolumnen Fragmentation som en uppskattning av effektiviteten för varje radgrupp i den aktuella databasen. Om du vill hitta information om en enskild tabell tar du bort kommentars bindestrecken framför WHERE--satsen och anger ett tabellnamn.

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;  

Se även

objektkatalogvyer (Transact-SQL)
katalogvyer (Transact-SQL)
Arkitektur för kolumnlagringsindex
frågor och svar om SQL Server System Catalog
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)