sys.pdw_nodes_column_store_row_groups (Transact-SQL)
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)