sys.pdw_nodes_column_store_row_groups (Transact-SQL)

Aplica-se a: Azure Synapse Analytics Analytics Platform System (PDW)

Fornece informações de índice columnstore clusterizadas por segmento para ajudar o administrador a tomar decisões de gerenciamento do sistema no Azure Synapse Analytics. sys.pdw_nodes_column_store_row_groups tem uma coluna para o número total de linhas armazenadas fisicamente (incluindo aquelas marcadas como excluídas) e uma coluna para o número de linhas marcadas como excluídas. Use sys.pdw_nodes_column_store_row_groups para determinar quais grupos de linhas têm uma alta porcentagem de linhas excluídas e devem ser recriados.

Nome da coluna Tipo de dados Descrição
object_id int ID da tabela subjacente. Essa é a tabela física no nó Computação, não o object_id da tabela lógica no nó Controle. Por exemplo, object_id não corresponde ao object_id em sys.tables.

Para ingressar com sys.tables, use sys.pdw_index_mappings.
index_id int ID do índice columnstore clusterizado em object_id tabela.
partition_number int ID da partição da tabela que contém o grupo de linhas row_group_id. Você pode usar partition_number para unir essa DMV a sys.partitions.
row_group_id int ID desse grupo de linhas. Isso é exclusivo dentro da partição.
dellta_store_hobt_id bigint O hobt_id para grupos de linhas delta ou NULL se o tipo de grupo de linhas não for delta. Um grupo de linhas delta é um grupo de linhas de leitura/gravação que está aceitando novos registros. Um grupo de linhas delta tem o status OPEN . Um grupo de linhas delta ainda está no formato rowstore e não foi compactado para o formato columnstore.
state tinyint O número de ID associado a state_description.

1 = OPEN

2 = CLOSED

3 = COMPRESSED
state_desccription nvarchar(60) Descrição do estado persistente do grupo de linhas:

OPEN - Um grupo de linhas de leitura/gravação que está aceitando novos registros. Um grupo de linhas aberto ainda está no formato rowstore e não foi compactado para o formato columnstore.

CLOSED - Um grupo de linhas que foi preenchido, mas ainda não compactado pelo processo de movimentação de tupla.

COMPRESSED - Um grupo de linhas que foi preenchido e compactado.
total_rows bigint Total de linhas fisicamente armazenadas no grupo de linhas. Algumas podem ter sido excluídas, mas ainda estão armazenadas. O número máximo de linhas em um grupo de linhas é 1.048.576 (FFFFF hexadecimal).
deleted_rows bigint Número de linhas armazenadas fisicamente no grupo de linhas marcadas para exclusão.

Sempre 0 para grupos de linhas DELTA.
size_in_bytes int Tamanho combinado, em bytes, de todas as páginas neste grupo de linhas. Esse tamanho não inclui o tamanho necessário para armazenar metadados ou dicionários compartilhados.
pdw_node_id int ID exclusiva de um nó do Azure Synapse Analytics.
distribution_id int ID exclusivo da distribuição.

Comentários

Retorna uma linha para cada grupo de linhas columnstore para cada tabela que tem um índice columnstore clusterizado ou não clusterizado.

Use sys.pdw_nodes_column_store_row_groups para determinar o número de linhas incluídas no grupo de linhas e o tamanho do grupo de linhas.

Quando o número de linhas excluídas em um grupo de linhas cresce para uma grande porcentagem do total de linhas, a tabela fica menos eficiente. Recrie o índice columnstore para reduzir o tamanho da tabela, reduzindo a E/S de disco necessária para ler a tabela. Para recompilar o índice columnstore, use a opção REBUILD da instrução ALTER INDEX .

O columnstore atualizável primeiro insere novos dados em um rowgroup OPEN , que está no formato rowstore e às vezes também é chamado de tabela delta. Quando um rowgroup aberto está cheio, seu estado muda para CLOSED. Um rowgroup fechado é compactado no formato columnstore pelo motor de tupla e o estado muda para COMPRESSED. O Tuple Mover é um processo em segundo plano que periodicamente é acionado e verifica se há algum rowgroup fechado que já esteja pronto para compactar em um rowgroup columnstore. O Tuple Mover também desaloca todos os rowgroups nos quais cada linha foi excluída. Os rowgroups desalocados são marcados como RETIRED. Para executar o movimentador de tupla imediatamente, use a opção REORGANIZE da instrução ALTER INDEX .

Quando um grupo de linhas de columnstore tiver sido preenchido, ele é compactado e para de aceitar novas linhas. Quando as linhas são excluídas de um grupo compactado, elas permanecem, mas são marcadas como excluídas. As atualizações para um grupo compactado são implementadas como uma exclusão do grupo compactado, e uma inserção em um grupo aberto.

Permissões

Requer a permissão VIEW SERVER STATE.

Exemplos: Azure Synapse Analytics e PDW (Analytics Platform System)

O exemplo a seguir une a tabela sys.pdw_nodes_column_store_row_groups a outras tabelas do sistema para retornar informações sobre tabelas específicas. A coluna calculada PercentFull é uma estimativa da eficiência do grupo de linhas. Para encontrar informações sobre uma única tabela, remova os hífens de comentário na frente da cláusula WHERE e forneça um nome de tabela.

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;  

O exemplo do Azure Synapse Analytics a seguir conta as linhas por partição para repositórios de colunas clusterizadas, bem como quantas linhas estão em grupos de linhas abertas, fechadas ou compactadas:

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

Confira também

Exibições de Catálogo do Azure Synapse Analytics e do Parallel Data Warehouse
CREATE COLUMNSTORE INDEX (Transact-SQL)
sys.pdw_nodes_column_store_segments (Transact-SQL)
sys.pdw_nodes_column_store_dictionaries (Transact-SQL)