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 Proceso, 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 | Identificador de este grupo de filas. Es único en la partición. |
delta_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_description | 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 de mover 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. Un grupo de filas cerrado se comprime en formato de almacén de columnas mediante el mover de tupla 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 mover 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 siguiente ejemplo de Azure Synapse Analytics se cuentan las filas por partición para los almacenes de columnas agrupadas, así como cuántas filas están 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)