Dela via


sys.column_store_row_groups (Transact-SQL)

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL-databas i Microsoft Fabric

Tillhandahåller kolumnlagringsindexinformation per segment.

För grupperade kolumnlagringsindex sys.column_store_row_groups har en kolumn för det totala antalet rader som lagras fysiskt (inklusive de som markerats som borttagna) och en kolumn för antalet rader som markerats som borttagna. Använd sys.column_store_row_groups för att avgöra vilka radgrupper som har en hög procentandel borttagna rader och bör återskapas.

Kolumnnamn Datatyp Description
object_id int ID:t för den tabell där det här indexet har definierats.
index_id int ID:t för kolumnlagringsindexet.
partition_number int Tabellpartitionen som innehåller den radgrupp som identifieras av row_group_id. Använd partition_number för att ansluta sys.partitions.
row_group_id int Radgruppsnumret som är associerat med denna radgrupp. Det här talet är unikt i partitionen.

-1 = slutet på en minnesoptimerad tabell.
delta_store_hobt_id bigint hobt_id För en OPEN radgrupp i deltaarkivet.

NULL om radgruppen inte finns i deltaarkivet.

NULL för slutet av en minnesoptimerad tabell.
state tinyint Ett tal som beskriver radgruppstillståndet.

0 = INVISIBLE

1 = OPEN

2 = CLOSED

3 = COMPRESSED

4 = TOMBSTONE
state_description nvarchar(60) Beskrivning av radgruppens tillstånd:

INVISIBLE – Ett dolt komprimerat segment som håller på att skapas från data i ett deltalager. Läsåtgärder använder deltaarkivet tills det osynliga komprimerade segmentet har slutförts. Sedan görs det nya segmentet synligt och källdelta-lagret tas bort.

OPEN – En radgrupp för läsning/skrivning som accepterar nya rader. En öppen radgrupp är fortfarande i radarkivformat och komprimeras inte till kolumnlagringsformat.

CLOSED – En radgrupp som är fylld, men ännu inte komprimerad av tuppelns flyttprocess.

COMPRESSED – En radgrupp som är fylld och komprimerad.
total_rows bigint Totalt lagrade rader fysiskt i radgruppen. Borttagna rader kan fortfarande lagras. Det maximala antalet rader i en radgrupp är 1 048 576.
deleted_rows bigint Totalt antal rader i radgruppen som har markerats som borttagna men förblir lagrade. Det här värdet är alltid 0 för deltaradsgrupper.

För icke-illustrerade kolumnlagringsindex inkluderar det här värdet inte borttagna rader som lagras i borttagningsbufferten. Mer information och hur du hittar antalet borttagna rader i borttagningsbufferten finns i sys.internal_partitions.
size_in_bytes bigint Storlek i byte för alla data i den här radgruppen (inklusive metadata eller delade ordlistor) för både deltalager- och columnstore-radgrupper.

Anmärkningar

Returnerar en rad för varje kolumnlagringsradgrupp för varje partition i varje tabell som har ett grupperat eller icke-grupperat kolumnlagringsindex.

Använd sys.column_store_row_groups för att ta reda på hur många rader som finns i radgruppen och storleken på radgruppen.

När antalet raderade rader i en radgrupp ökar till en stor procentandel av de totala raderna blir tabellen mindre effektiv. Bygg om kolumnlagringsindexet för att minska tabellens storlek, vilket minskar diskens I/O som krävs för att läsa tabellen. Om du vill återskapa kolumnlagringsindexet REBUILD använder du instruktionens sats ALTER INDEX .

Det uppdateringsbara kolumnarkivet infogar först nya data i en öppen radgrupp, som är i radlagringsformat, och kallas ibland även för en deltatabell. När en öppen radgrupp är full ändras dess tillstånd till CLOSED. En stängd radgrupp komprimeras till kolumnlagringsformat av tuppelns mover och tillståndet ändras till COMPRESSED. Tuple mover är en bakgrundsprocess som periodiskt vaknar och kontrollerar om det finns några stängda radgrupper som är redo att komprimeras till en kolumnlagringsradgrupp. Tuppeln frigör även alla radgrupper där varje rad tas bort. Frigjorda radgrupper markeras som TOMBSTONE. Om du vill köra tuppelns mover omedelbart använder du REORGANIZE instruktionens sats ALTER INDEX .

När en kolumnlagringsradgrupp fylls komprimeras den och slutar acceptera nya rader. När du tar bort rader från en komprimerad grupp finns de kvar men markeras som borttagna. Uppdateringar till en komprimerad grupp implementeras som en borttagning från den komprimerade gruppen och en insättning till en öppen grupp.

Permissions

Returnerar information för en tabell om användaren har VIEW DEFINITION behörighet på tabellen.

Synligheten för metadata i katalogvyer är begränsad till skyddsbara objekt som en användare antingen äger eller som användaren har beviljats viss behörighet för. Mer information finns i Konfiguration av synlighet för metadata.

Examples

I följande exempel kopplas vyn och andra systemvyer sys.column_store_row_groups till att returnera information om grupperade columnstore-index. Kolumnen percent_full är en uppskattning av radgruppens effektivitet.

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;

Mer information finns i Kontrollera fragmenteringen av ett kolumnlagringsindex.