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
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)