Delen via


sys.pdw_nodes_column_store_row_groups (Transact-SQL)

van toepassing op:Azure Synapse AnalyticsAnalytics Platform System (PDW)

Biedt geclusterde columnstore-indexinformatie per segment om de beheerder te helpen bij het nemen van beslissingen voor systeembeheer in Azure Synapse Analytics. sys.pdw_nodes_column_store_row_groups heeft een kolom voor het totale aantal rijen dat fysiek is opgeslagen (inclusief rijen die zijn gemarkeerd als verwijderd) en een kolom voor het aantal rijen dat is gemarkeerd als verwijderd. Gebruik sys.pdw_nodes_column_store_row_groups om te bepalen welke rijgroepen een hoog percentage verwijderde rijen hebben en opnieuw moeten worden opgebouwd.

Kolomnaam Gegevenstype Beschrijving
object_id Id van de onderliggende tabel. Dit is de fysieke tabel op het rekenknooppunt, niet de object_id voor de logische tabel op het besturingsknooppunt. Object_id komt bijvoorbeeld niet overeen met de object_id in sys.tables.

Gebruik sys.pdw_index_mappings om samen te voegen met sys.tables.
index_id Id van de geclusterde columnstore-index in object_id tabel.
partition_number Id van de tabelpartitie met rijgroep row_group_id. U kunt partition_number gebruiken om deze DMV toe te voegen aan sys.partitions.
row_group_id Id van deze rijgroep. Dit is uniek binnen de partitie.
delta_store_hobt_id grote De hobt_id voor deltarijgroepen of NULL als het type rijgroep geen delta is. Een deltarijgroep is een rijgroep lezen/schrijven die nieuwe records accepteert. Een deltarijgroep heeft de status OPEN. Een deltarijgroep heeft nog steeds de indeling rowstore en is niet gecomprimeerd naar de columnstore-indeling.
status kleine Id-nummer dat is gekoppeld aan de state_description.

1 = OPEN

2 = GESLOTEN

3 = GECOMPRIMEERD
state_description nvarchar(60) Beschrijving van de permanente status van de rijgroep:

OPEN: een rijgroep voor lezen/schrijven die nieuwe records accepteert. Een open rijgroep heeft nog steeds de indeling rowstore en is niet gecomprimeerd naar de columnstore-indeling.

GESLOTEN - Een rijgroep die is gevuld, maar nog niet gecomprimeerd door het tuple mover-proces.

GECOMPRIMEERD: een rijgroep die is gevuld en gecomprimeerd.
total_rows grote Totaal aantal rijen dat fysiek is opgeslagen in de rijgroep. Sommige zijn mogelijk verwijderd, maar ze worden nog steeds opgeslagen. Het maximum aantal rijen in een rijgroep is 1.048.576 (hexadecimale FFFFF).
deleted_rows grote Het aantal rijen dat fysiek is opgeslagen in de rijgroep die is gemarkeerd voor verwijdering.

Altijd 0 voor DELTA-rijgroepen.
size_in_bytes Gecombineerde grootte, in bytes, van alle pagina's in deze rijgroep. Deze grootte bevat niet de vereiste grootte voor het opslaan van metagegevens of gedeelde woordenlijsten.
pdw_node_id Unieke id van een Azure Synapse Analytics-knooppunt.
distribution_id Unieke id van de distributie.

Opmerkingen

Retourneert één rij voor elke columnstore-rijgroep voor elke tabel met een geclusterde of niet-geclusterde columnstore-index.

Gebruik sys.pdw_nodes_column_store_row_groups om het aantal rijen in de rijgroep en de grootte van de rijgroep te bepalen.

Wanneer het aantal verwijderde rijen in een rijgroep toeneemt tot een groot percentage van de totaalrijen, wordt de tabel minder efficiënt. Bouw de columnstore-index opnieuw om de grootte van de tabel te verkleinen, waardoor de I/O van de schijf die nodig is om de tabel te lezen, wordt verminderd. Als u de columnstore-index opnieuw wilt opbouwen, gebruikt u de optie REBUILD van de instructie ALTER INDEX .

In de bijwerkbare columnstore worden eerst nieuwe gegevens ingevoegd in een OPEN rijgroep, die de rijopslagindeling heeft en ook wel een deltatabel wordt genoemd. Zodra een geopende rijgroep vol is, wordt de status gewijzigd in GESLOTEN. Een gesloten rijgroep wordt gecomprimeerd in columnstore-indeling door de tuple-mover en de status verandert in GECOMPRIMEERDE. De tuple mover is een achtergrondproces dat periodiek wakker wordt en controleert of er gesloten rijgroepen zijn die klaar zijn om te comprimeren in een columnstore-rijgroep. Met de tuple-mover wordt ook de toewijzing van rijengroepen opgeheven waarin elke rij is verwijderd. De toewijzing van rijengroepen is gemarkeerd als buiten gebruik gesteld. Als u tuple-mover onmiddellijk wilt uitvoeren, gebruikt u de optie REORGANIZE van de instructie ALTER INDEX.

Wanneer een columnstore-rijgroep is gevuld, wordt deze gecomprimeerd en wordt het accepteren van nieuwe rijen gestopt. Wanneer rijen uit een gecomprimeerde groep worden verwijderd, blijven ze behouden, maar worden ze gemarkeerd als verwijderd. Updates voor een gecomprimeerde groep worden geïmplementeerd als een verwijdering uit de gecomprimeerde groep en een invoeging in een geopende groep.

Machtigingen

Hiervoor is -machtiging SERVERSTATUS WEERGEVEN vereist.

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

In het volgende voorbeeld wordt de sys.pdw_nodes_column_store_row_groups tabel gekoppeld aan andere systeemtabellen om informatie over specifieke tabellen te retourneren. De berekende PercentFull kolom is een schatting van de efficiëntie van de rijgroep. Als u informatie over één tabel wilt vinden, verwijdert u de afbreekstreepjes voor opmerkingen vóór de WHERE-component en geeft u een tabelnaam op.

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;  

In het volgende Azure Synapse Analytics-voorbeeld worden de rijen per partitie voor geclusterde kolomarchieven geteld en hoeveel rijen zich in groepen Open, Gesloten of Gecomprimeerde rijen bevinden:

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

Zie ook

azure Synapse Analytics- en parallelle datawarehouse-catalogusweergaven
COLUMNSTORE-INDEX (Transact-SQL) maken
sys.pdw_nodes_column_store_segments (Transact-SQL)
sys.pdw_nodes_column_store_dictionaries (Transact-SQL)