Partilhar via


sys.pdw_nodes_column_store_row_groups (Transact-SQL)

Aplica-se a: do Azure Synapse AnalyticsAnalytics 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 fisicamente armazenadas (incluindo as 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 reconstruídos.

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

Para se juntar a 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 este DMV a sys.partitions.
row_group_id int ID deste grupo de linhas. Isso é único dentro da partição.
delta_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.
estado minúsculo Número de identificação associado ao state_description.

1 = ABERTO

2 = FECHADO

3 = COMPRIMIDO
state_description 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 abertas ainda está no formato rowstore e não foi compactado para o formato columnstore.

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

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

Sempre 0 para grupos de linhas DELTA.
size_in_bytes int Tamanho combinado, em bytes, de todas as páginas deste 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 com 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 se torna menos eficiente. Reconstrua o índice columnstore para reduzir o tamanho da tabela, reduzindo a E/S de disco necessária para ler a tabela. Para reconstruir o índice columnstore, use a opção REBUILD da instrução ALTER INDEX.

O columnstore atualizável primeiro insere novos dados em um OPEN rowgroup, que está no formato rowstore e também é às vezes chamado de tabela delta. Quando um grupo de linhas aberto estiver cheio, seu estado será alterado para CLOSED. Um grupo de linhas fechado é compactado no formato columnstore pelo movimentador de tupla e o estado muda para COMPRESSED. O movimentador de tupla é um processo em segundo plano que periodicamente é ativado e verifica se há algum grupo de linhas fechado pronto para compactar em um grupo de linhas columnstore. O movimentador de tupla também deslocaliza quaisquer grupos de linhas nos quais todas as linhas foram excluídas. Os grupos de linhas desaocados são marcados como APOSENTADO. Para executar o tuple mover imediatamente, use a opção REORGANIZAR da instrução ALTER INDEX.

Quando um grupo de linhas columnstore é 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 permissão de VIEW SERVER STATE .

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

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 PercentFull calculada é uma estimativa da eficiência do grupo de linhas. Para encontrar informações sobre uma única tabela, remova a hífenes de comentários 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 armazenamentos 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

Ver também

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