Dela via


sys.pdw_nodes_column_store_row_groups (Transact-SQL)

gäller för:Azure Synapse AnalyticsAnalytics Platform System (PDW)

Tillhandahåller grupperad kolumnlagringsindexinformation per segment för att hjälpa administratören att fatta beslut om systemhantering i Azure Synapse Analytics. sys.pdw_nodes_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.pdw_nodes_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 Beskrivning
object_id int ID för den underliggande tabellen. Det här är den fysiska tabellen på beräkningsnoden, inte object_id för den logiska tabellen på noden Kontroll. Object_id matchar till exempel inte object_id i sys.tables.

Om du vill ansluta till sys.tables använder du sys.pdw_index_mappings.
index_id int ID för det klustrade kolumnlagringsindexet i object_id tabell.
partition_number int ID för tabellpartitionen som innehåller radgruppen 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. Detta är unikt i partitionen.
delta_store_hobt_id bigint Hobt_id för deltaradsgrupper eller NULL om radgruppstypen inte är delta. En deltaradsgrupp är en radgrupp för läsning/skrivning som accepterar nya poster. En deltaradsgrupp har statusen OPEN. En deltaradsgrupp är fortfarande i radarkivformat och har inte komprimerats till kolumnarkivformat.
tillstånd pytteliten ID-nummer som är associerat med state_description.

1 = ÖPPNA

2 = STÄNGD

3 = KOMPRIMERAD
state_description nvarchar(60) Beskrivning av radgruppens beständiga tillstånd:

OPEN – en radgrupp för läsning/skrivning som accepterar nya poster. En öppen radgrupp är fortfarande i radarkivformat och har inte komprimerats till kolumnarkivformat.

STÄNGD – En radgrupp som har fyllts i, men ännu inte komprimerats av tuppelns flyttprocess.

KOMPRIMERAD – en radgrupp som har fyllts och komprimerats.
total_rows bigint Totalt antal rader som lagras fysiskt i radgruppen. Vissa kan ha tagits bort, men de lagras fortfarande. Det maximala antalet rader i en radgrupp är 1 048 576 (hexadecimal FFFFF).
deleted_rows bigint Antal rader som lagras fysiskt i den radgrupp som har markerats för borttagning.

Alltid 0 för DELTA-radgrupper.
size_in_bytes int 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.
pdw_node_id int Unikt ID för en Azure Synapse Analytics-nod.
distribution_id int Unikt ID för fördelningen.

Anmärkningar

Returnerar en rad för varje kolumnlagringsradgrupp för varje tabell med ett grupperat eller icke-grupperat kolumnlagringsindex.

Använd sys.pdw_nodes_column_store_row_groups för att fastställa antalet rader som ingår i radgruppen och radgruppens storlek.

När antalet borttagna rader i en radgrupp växer till en stor procentandel av de totala raderna blir tabellen mindre effektiv. Återskapa kolumnlagringsindexet för att minska storleken på tabellen, vilket minskar disk-I/O som krävs för att läsa tabellen. Om du vill återskapa kolumnlagringsindexet använder du alternativet REBUILD i instruktionen ALTER INDEX.

Det uppdateringsbara kolumnarkivet infogar först nya data i en OPEN rowgroup, som är i radlagringsformat, och kallas ibland även för en deltatabell. När en öppen radgrupp är full ändras dess tillstånd till STÄNGD. En stängd radgrupp komprimeras till kolumnlagringsformat av tuppelns mover och tillståndet ändras till KOMPRIMERAD. Tuppeln är en bakgrundsprocess som regelbundet aktiveras 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 har tagits bort. Frigjorda radgrupper markeras som RETIRED. Om du vill köra tuppeln direkt använder du alternativet ORDNA om i instruktionen ALTER INDEX.

När en kolumnlagringsradgrupp har fyllts komprimeras den och slutar acceptera nya rader. När rader tas bort från en komprimerad grupp förblir de kvar men markeras som borttagna. Uppdateringar av en komprimerad grupp implementeras som en borttagning från den komprimerade gruppen och en infogning till en öppen grupp.

Behörigheter

Kräver behörigheten VISA SERVERTILLSTÅND.

Exempel: Azure Synapse Analytics and Analytics Platform System (PDW)

I följande exempel kopplas sys.pdw_nodes_column_store_row_groups-tabellen till andra systemtabeller för att returnera information om specifika tabeller. Den beräknade PercentFull kolumnen är en uppskattning av radgruppens effektivitet. Om du vill hitta information om en enskild tabell tar du bort kommentars bindestrecken framför WHERE-satsen och anger ett tabellnamn.

SELECT IndexMap.object_id,   
  object_name(IndexMap.object_id) AS LogicalTableName,   
  i.name AS LogicalIndexName, IndexMap.index_id, NI.type_desc,   
  IndexMap.physical_name AS PhyIndexNameFromIMap,   
  CSRowGroups.*,  
  100*(ISNULL(deleted_rows,0))/total_rows AS PercentDeletedRows   
FROM sys.tables AS t  
JOIN sys.indexes AS i  
    ON t.object_id = i.object_id  
JOIN sys.pdw_index_mappings AS IndexMap  
    ON i.object_id = IndexMap.object_id  
    AND i.index_id = IndexMap.index_id  
JOIN sys.pdw_nodes_indexes AS NI  
    ON IndexMap.physical_name = NI.name  
    AND IndexMap.index_id = NI.index_id  
JOIN sys.pdw_nodes_column_store_row_groups AS CSRowGroups  
    ON CSRowGroups.object_id = NI.object_id   
    AND CSRowGroups.pdw_node_id = NI.pdw_node_id  
    AND CSRowGroups.distribution_id = NI.distribution_id
    AND CSRowGroups.index_id = NI.index_id      
WHERE total_rows > 0
--WHERE t.name = '<table_name>'   
ORDER BY object_name(i.object_id), i.name, IndexMap.physical_name, pdw_node_id;  

I följande Azure Synapse Analytics-exempel räknas raderna per partition för grupperade kolumnlager samt hur många rader som finns i grupper med öppna, stängda eller komprimerade rader:

SELECT
    s.name AS [Schema Name]
    ,t.name AS [Table Name]
    ,rg.partition_number AS [Partition Number]
    ,SUM(rg.total_rows) AS [Total Rows]
    ,SUM(CASE WHEN rg.State = 1 THEN rg.Total_rows Else 0 END) AS [Rows in OPEN Row Groups]
    ,SUM(CASE WHEN rg.State = 2 THEN rg.Total_Rows ELSE 0 END) AS [Rows in Closed Row Groups]
    ,SUM(CASE WHEN rg.State = 3 THEN rg.Total_Rows ELSE 0 END) AS [Rows in COMPRESSED Row Groups]
FROM sys.pdw_nodes_column_store_row_groups rg
  JOIN sys.pdw_nodes_tables pt
    ON rg.object_id = pt.object_id
    AND rg.pdw_node_id = pt.pdw_node_id
    AND pt.distribution_id = rg.distribution_id
  JOIN sys.pdw_table_mappings tm
    ON pt.name = tm.physical_name
  INNER JOIN sys.tables t
    ON tm.object_id = t.object_id
  INNER JOIN sys.schemas s
    ON t.schema_id = s.schema_id
GROUP BY s.name, t.name, rg.partition_number
ORDER BY 1, 2

Se även

Katalogvyer för Azure Synapse Analytics och Parallel Data Warehouse
CREATE COLUMNSTORE INDEX (Transact-SQL)
sys.pdw_nodes_column_store_segments (Transact-SQL)
sys.pdw_nodes_column_store_dictionaries (Transact-SQL)