Freigeben über


sys.pdw_nodes_column_store_row_groups (Transact-SQL)

Gilt für: Azure Synapse Analytics Analytics Platform System (PDW)

Stellt gruppierte Spaltenspeicherindexinformationen pro Segment bereit, um dem Administrator bei der Entscheidung über die Systemverwaltung in Azure Synapse Analytics zu helfen. sys.pdw_nodes_column_store_row_groups enthält eine Spalte für die Gesamtzahl der physisch gespeicherten Zeilen (einschließlich der als gelöscht markierten Zeilen) und eine Spalte für die Anzahl der als gelöscht markierten Zeilen. Verwenden Sie sys.pdw_nodes_column_store_row_groups , um zu bestimmen, welche Zeilengruppen einen hohen Prozentsatz von gelöschten Zeilen aufweisen und neu erstellt werden sollten.

Spaltenname Datentyp BESCHREIBUNG
object_id int ID der zugrunde liegenden Tabelle. Dies ist die physische Tabelle auf dem Computeknoten, nicht die object_id für die logische Tabelle auf dem Steuerelementknoten. Beispielsweise stimmt object_id nicht mit dem object_id in sys.tables überein.

Um mit sys.tables zu verknüpfen, verwenden Sie sys.pdw_index_mappings.
index_id int ID des gruppierten Columnstore-Index für object_id Tabelle.
partition_number int ID der Tabellenpartition, die Zeilengruppe row_group_id enthält. Sie können partition_number verwenden, um diesen DMV mit sys.partitions zu verbinden.
row_group_id int ID dieser Zeilengruppe. Diese ist innerhalb der Partition eindeutig.
dellta_store_hobt_id bigint Die hobt_id für Deltazeilengruppen oder NULL, wenn der Zeilengruppentyp nicht Delta ist. Eine Deltazeilengruppe ist eine Zeilengruppe mit Lese-/Schreibzugriff, die neue Datensätze akzeptiert. Eine Deltazeilengruppe weist den OPEN-Status auf. Eine Deltazeilengruppe befindet sich weiterhin im rowstore-Format und wurde nicht in das columnstore-Format komprimiert.
state tinyint Die der state_description zugeordnete ID.

1 = OPEN

2 = CLOSED

3 = COMPRESSED
state_desccription nvarchar(60) Beschreibung des persistenten Status der Zeilengruppe:

OPEN – Eine Zeilengruppe mit Lese-/Schreibzugriff, die neue Datensätze akzeptiert. Eine offene Zeilengruppe befindet sich weiterhin im rowstore-Format und wurde nicht in das columnstore-Format komprimiert.

CLOSED – Eine Zeilengruppe, die ausgefüllt, aber noch nicht vom Tupel-Moverprozess komprimiert wurde.

COMPRESSED - Eine Zeilengruppe, die gefüllt und komprimiert wurde.
total_rows bigint Gesamtzahl der Zeilen, die in der Zeilengruppe physisch gespeichert sind. Einige wurden u. U. gelöscht, sind aber weiterhin gespeichert. Die maximale Anzahl der Zeilen in einer Zeilengruppe beträgt 1.048.576 (hexadezimal FFFFF).
deleted_rows bigint Die Anzahl der physisch in der Zeilengruppe gespeicherten Zeilen, die zum Löschen markiert sind.

Immer 0 für DELTA-Zeilengruppen.
size_in_bytes int Kombinierte Größe in Byte aller Seiten in dieser Zeilengruppe. Diese Größe enthält nicht die zum Speichern von Metadaten oder freigegebenen Wörterbüchern erforderliche Größe.
pdw_node_id int Eindeutige ID eines Azure Synapse Analytics-Knotens.
distribution_id int Eindeutige ID der Verteilung.

Hinweise

Gibt eine Zeile für jede columnstore-Zeilengruppe für jede Tabelle zurück, die über einen gruppierten oder nicht gruppierten columnstore-Index verfügt.

Verwenden Sie sys.pdw_nodes_column_store_row_groups , um die Anzahl der Zeilen in der Zeilengruppe und die Größe der Zeilengruppe zu bestimmen.

Wenn die Anzahl der gelöschten Zeilen in einer Zeilengruppe auf einen hohen Prozentsatz der Gesamtzeilen ansteigt, wird die Tabelle weniger effizient. Erstellen Sie den columnstore-Index neu, um die Tabellengröße zu verringern und die Datenträger-E/A zu reduzieren, die zum Lesen der Tabelle erforderlich ist. Um den Columnstore-Index neu zu erstellen, verwenden Sie die OPTION "REBUILD " der ALTER INDEX-Anweisung .

Der aktualisierbare Columnstore fügt zunächst neue Daten in eine OPEN-Zeilengruppe ein, die sich im Rowstore-Format befindet und manchmal auch als Delta-Tabelle bezeichnet wird. Sobald eine geöffnete Zeilengruppe voll ist, ändert sich der Status in CLOSED. Eine geschlossene Zeilengruppe wird durch den Tupel-Mover in das Spaltenspeicherformat komprimiert, und der Zustand wird in COMPRESSED geändert. Die Tupelverschiebungsfunktion ist ein Hintergrundprozess, der regelmäßig aktiv wird und überprüft, ob geschlossene Zeilengruppen vorhanden sind, die in eine columnstore-Zeilengruppe komprimiert werden können. Die Tupelverschiebungsfunktion gibt außerdem alle Zeilengruppen frei, in denen alle Zeilen gelöscht wurden. Deallocated rowgroups are marked as RETIRED. Verwenden Sie die REORGANIZE-Option der ALTER INDEX-Anweisung , um den Tupel-Mover sofort auszuführen.

Wenn eine columnstore-Zeilengruppe aufgefüllt wurde, wird sie komprimiert und akzeptiert keine neuen Zeilen mehr. Wenn aus einer komprimierten Gruppe Zeilen gelöscht werden, verbleiben sie zwar, werden aber als gelöscht gekennzeichnet. Updates einer komprimierten Gruppe werden als Löschvorgang für die komprimierte Gruppe und als Einfügevorgang für eine offene Gruppe implementiert.

Berechtigungen

Erfordert die VIEW SERVER STATE-Berechtigung.

Beispiele: Azure Synapse Analytics und Analytics-Plattformsystem (PDW)

Im folgenden Beispiel wird die sys.pdw_nodes_column_store_row_groups Tabelle mit anderen Systemtabellen verknüpft, um Informationen zu bestimmten Tabellen zurückzugeben. Die berechnete PercentFull-Spalte ist eine Schätzung der Effizienz der Zeilengruppe. Wenn Sie Informationen zu einer einzelnen Tabelle suchen möchten, entfernen Sie die Kommentarbindestriche vor der WHERE-Klausel, und geben Sie einen Tabellennamen an.

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;  

Im folgenden Beispiel für Azure Synapse Analytics werden die Zeilen pro Partition für gruppierte Spaltenspeicher sowie die Anzahl der Zeilen in Gruppen "Geöffnet", "Geschlossen" oder "Komprimierte Zeilen" gerechnet:

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

Weitere Informationen

Katalogsichten von Azure Synapse Analytics und Parallel Data Warehouse Catalog
CREATE COLUMNSTORE INDEX (Transact-SQL)
sys.pdw_nodes_column_store_segments (Transact-SQL)
sys.pdw_nodes_column_store_dictionaries (Transact-SQL)