sys.pdw_nodes_column_store_row_groups (Transact-SQL)

Se aplica a:Azure Synapse AnalyticsAnalytics Platform System (PDW)

Proporciona información de índice de almacén de columnas agrupada por segmento para ayudar al administrador a tomar decisiones de administración del sistema en Azure Synapse Analytics. sys.pdw_nodes_column_store_row_groups tiene una columna para el número total de filas almacenadas físicamente (incluidas las marcadas como eliminadas) y una columna para el número de filas marcadas como eliminadas. Use sys.pdw_nodes_column_store_row_groups para determinar qué grupos de filas tienen un alto porcentaje de filas eliminadas y se deben volver a generar.

Nombre de la columna Tipo de datos Descripción
object_id int Identificador de la tabla subyacente. Esta es la tabla física del nodo Compute, no la object_id de la tabla lógica en el nodo Control. Por ejemplo, object_id no coincide con el object_id en sys.tables.

Para combinar con sys.tables, use sys.pdw_index_mappings.
id_de_índice int Identificador del índice de almacén de columnas agrupado en object_id tabla.
partition_number int Identificador de la partición de tabla que contiene el grupo de filas row_group_id. Puede usar partition_number para unir esta DMV a sys.partitions.
row_group_id int Id. de este grupo de filas. Es único en la partición.
dellta_store_hobt_id bigint El hobt_id para los grupos de filas delta, o NULL si el tipo del grupo de filas no es delta. Un grupo de filas delta es un grupo de filas de lectura/escritura que acepta nuevos registros. Un grupo de filas delta tiene el estado OPEN . Un grupo de filas delta está todavía en formato de almacén de filas y no se ha comprimido al formato de almacén de columnas.
state tinyint Número de identificación asociado con el state_description.

1 = OPEN

2 = CLOSED

3 = COMPRESSED
state_desccription nvarchar(60) Descripción del estado persistente del grupo de filas:

OPEN: un grupo de filas de lectura y escritura que acepta nuevos registros. Un grupo de filas abierto está todavía en formato de almacén de filas y no se ha comprimido al formato de almacén de columnas.

CLOSED: un grupo de filas que se ha rellenado, pero aún no comprimido por el proceso del motor de tupla.

COMPRESSED: un grupo de filas que se ha rellenado y comprimido.
total_rows bigint Total de filas almacenadas físicamente en el grupo de filas. Es posible que se hayan eliminado algunas, pero estas se siguen almacenando. El número máximo de filas en un grupo de filas es 1.048.576 (hexadecimal FFFFF).
deleted_rows bigint Número de filas almacenadas físicamente en el grupo de filas marcados para su eliminación.

Siempre 0 para grupos de filas DELTA.
size_in_bytes int Tamaño combinado, en bytes, de todas las páginas de este grupo de filas. Este tamaño no incluye el tamaño necesario para almacenar metadatos o diccionarios compartidos.
pdw_node_id int Identificador único de un nodo de Azure Synapse Analytics.
distribution_id int Identificador único de la distribución.

Comentarios

Devuelve una fila para cada grupo de filas del almacén de columnas de cada tabla que tenga un índice clúster o no clúster de almacén de columnas.

Use sys.pdw_nodes_column_store_row_groups para determinar el número de filas incluidas en el grupo de filas y el tamaño del grupo de filas.

Cuando el número de filas eliminadas de un grupo de filas alcanza un alto porcentaje de las filas totales, la tabla pierde eficiencia. Vuelva a generar el índice de almacén de columnas para reducir el tamaño de la tabla, reduciendo así la E/S de disco necesaria para leer la tabla. Para volver a generar el índice de almacén de columnas, use la opción REBUILD de la instrucción ALTER INDEX .

El almacén de columnas actualizable inserta primero nuevos datos en un grupo de filas OPEN , que se encuentra en formato de almacén de filas y, a veces, también se conoce como una tabla delta. Una vez que un grupo de filas abierto está lleno, su estado cambia a CLOSED. El motor de tupla comprime un grupo de filas cerrado en formato de almacén de columnas y el estado cambia a COMPRESSED. La tupla motriz es un proceso en segundo plano que de forma periódica se despierta y comprueba si hay grupos de filas cerrados listos para comprimirse en un grupo de filas de almacén de columnas. La tupla motriz también cancela la asignación de los grupos de filas en los que se han borrado todas las filas. Los grupos de filas desasignados se marcan como RETIRADOs. Para ejecutar el motor de tupla inmediatamente, use la opción REORGANIZE de la instrucción ALTER INDEX .

Cuando se ha rellenado un grupo de filas de almacén de columnas, se comprime y ya no se aceptan filas nuevas. Cuando se eliminan filas de un grupo comprimido, siguen estando allí pero están marcadas como eliminadas. Las actualizaciones de un grupo comprimido se implementan como una eliminación del grupo comprimido, y como una inserción en un grupo abierto.

Permisos

Requiere el permiso VIEW SERVER STATE.

Ejemplos: Azure Synapse Analytics y Sistema de la plataforma de análisis (PDW)

En el ejemplo siguiente se combina la tabla sys.pdw_nodes_column_store_row_groups a otras tablas del sistema para devolver información sobre tablas específicas. La columna PercentFull calculada es una estimación de la eficacia del grupo de filas. Para buscar información sobre una sola tabla, quite los guiones de comentario delante de la cláusula WHERE y proporcione un nombre de tabla.

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;  

En el ejemplo siguiente de Azure Synapse Analytics se cuentan las filas por partición de los almacenes de columnas agrupadas, así como el número de filas en grupos de filas abiertas, cerradas o comprimidas:

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

Consulte también

Vistas de catálogo de Azure Synapse Analytics y Almacenamiento de datos paralelos
CREATE COLUMNSTORE INDEX (Transact-SQL)
sys.pdw_nodes_column_store_segments (Transact-SQL)
sys.pdw_nodes_column_store_dictionaries (Transact-SQL)