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)