sys.column_store_row_groups (Transact-SQL)

Aplica-se a: SQL Server 2012 (11.x) e posterior Instância Gerenciada de SQL do Azure

Fornece informações do índice columnstore clusterizado por segmento para ajudar o administrador a tomar decisões de gerenciamento de sistema. sys.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.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 A ID da tabela na qual esse índice é definido.
index_id int ID do índice para a tabela que contém esse índice columnstore.
partition_number int ID da partição da tabela que contém o row_group_id do grupo de linhas. Você pode usar o partition_number para adicionar esse DMV a sys.partitions.
row_group_id int O número do grupo de linhas associado a esse grupo de linhas. Isso é exclusivo dentro da partição.

-1 = final de uma tabela na memória.
delta_store_hobt_id BIGINT O hobt_id para o grupo de linhas OPEN no repositório delta.

NULL se o grupo de linhas não estiver no repositório delta.

NULL para a parte final de uma tabela na memória.
state tinyint O número de ID associado a state_description.

0 = INVISIBLE

1 = OPEN

2 = CLOSED

3 = COMPACTADO

4 = LÁPIDE
state_description nvarchar(60) Descrição do estado persistente do grupo de linhas:

INVISIBLE - Um segmento compactado oculto no processo de criação de dados em um armazenamento delta. As ações de leitura usarão o repositório delta até que o segmento compactado invisível seja concluído. Em seguida, o novo segmento é tornado visível e o repositório delta da origem é removido.

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 Total de linhas no grupo de linhas marcadas como excluídas. Isso é sempre 0 para grupos de linhas DELTA.
size_in_bytes BIGINT Tamanho em bytes de todos os dados nesse grupo de linhas (que não inclui metadados ou dicionários compartilhados), para rowgroups DELTA e COLUMNSTORE.

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.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 TOMBSTONE. 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

Retorna informações de uma tabela se o usuário tiver VIEW DEFINITION permissão na tabela.

A visibilidade dos metadados em exibições do catálogo está limitada aos protegíveis que pertencem a um usuário ou para os quais o usuário recebeu permissão. Para obter mais informações, consulte Metadata Visibility Configuration.

Exemplos

O exemplo a seguir une a tabela sys.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 i.object_id, object_name(i.object_id) AS TableName,   
i.name AS IndexName, i.index_id, i.type_desc,   
CSRowGroups.*,   
100*(total_rows - ISNULL(deleted_rows,0))/total_rows AS PercentFull    
FROM sys.indexes AS i  
JOIN sys.column_store_row_groups AS CSRowGroups  
    ON i.object_id = CSRowGroups.object_id  
AND i.index_id = CSRowGroups.index_id   
--WHERE object_name(i.object_id) = '<table_name>'   
ORDER BY object_name(i.object_id), i.name, row_group_id;  

Confira também

Exibições do catálogo de objeto (Transact-SQL)
Exibições do Catálogo (Transact-SQL)
Consultando as perguntas frequentes do catálogo do sistema do SQL Server
sys.columns (Transact-SQL)
sys.all_columns (Transact-SQL)
sys.computed_columns (Transact-SQL)
Guia de Índices columnstore
sys.column_store_dictionaries (Transact-SQL)
sys.column_store_segments (Transact-SQL)