sys.pdw_nodes_column_store_row_groups (Transact-SQL)
Aplica-se a: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 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. |
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. |
state | tinyint | O número de ID associado a state_description. 1 = OPEN 2 = CLOSED 3 = COMPRESSED |
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 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)