sys.pdw_nodes_column_store_row_groups (Transact-SQL)
Gilt für:Azure Synapse AnalyticsAnalytics Platform System (PDW)
Stellt gruppierte Columnstore-Indexinformationen auf Segmentbasis bereit, um dem Administrator zu helfen, Systemverwaltungsentscheidungen in Azure Synapse Analytics zu treffen. sys.pdw_nodes_column_store_row_groups enthält eine Spalte für die Gesamtanzahl 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 ermitteln, welche Zeilengruppen einen hohen Prozentsatz gelöschter 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 Knoten Compute, nicht die object_id für die logische Tabelle auf dem Knoten Control. Beispielsweise stimmt object_id nicht mit dem object_id in sys.tables überein. Verwenden Sie zum Verknüpfen mit sys.tables 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 diese DMV mit sys.partitions zu verknüpfen. |
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 verfügt über die OPEN-status. 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-Mover-Prozess 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 | Anzahl der Zeilen, die physisch in der Zeilengruppe gespeichert sind, die zum Löschen markiert sind. Für DELTA-Zeilengruppen immer 0. |
size_in_bytes | int | Kombinierte Größe aller Seiten in dieser Zeilengruppe in Bytes. Diese Größe enthält nicht die Größe, die zum Speichern von Metadaten oder freigegebenen Wörterbüchern erforderlich ist. |
pdw_node_id | int | Eindeutige ID eines Azure Synapse Analytics-Knotens. |
distribution_id | int | Eindeutige ID der Verteilung. |
Bemerkungen
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 in der Zeilengruppe enthaltenen Zeilen 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. Verwenden Sie die Option REBUILD der ALTER INDEX-Anweisung , um den Columnstore-Index neu zu erstellen.
Der aktualisierbare Columnstore fügt zunächst neue Daten in eine OPEN-Zeilengruppe ein, die im Rowstore-Format vorliegt und manchmal auch als Deltatabelle bezeichnet wird. Sobald eine offene Zeilengruppe voll ist, ändert sich ihr Status in GESCHLOSSEN. Eine geschlossene Zeilengruppe wird durch den Tupel-Mover in das Columnstore-Format komprimiert, und der Zustand ändert sich in COMPRESSED. 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. Zugeordnete Zeilengruppen werden als EINGESTELLT markiert. Um tupel mover sofort auszuführen, verwenden Sie die REORGANIZE-Option der ALTER INDEX-Anweisung .
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. Um Informationen zu einer einzelnen Tabelle zu finden, 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 Azure Synapse Analytics-Beispiel werden die Zeilen pro Partition für gruppierte Spaltenspeicher und die Anzahl der Zeilen in den Gruppen "Offene", "Geschlossene" oder "Komprimierte Zeilen" zählungen zählungen zählungen:
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)
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für