Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för: SQL Server 2016 (13.x) och senare
Azure SQL Database
Azure 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)