Compartilhar via


sys.column_store_row_groups (Transact-SQL)

Fornece informações do índice columnstore clusterizado por segmento para ajudar o administrador a tomar decisões de gerenciamento de sistema. O sys.column_store_row_groups tem uma coluna para o número total de linhas armazenadas fisicamente (inclusive as 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 porcentagem alta de linhas excluídas e devem ser recriados.

Aplica-se a: SQL Server (SQL Server 2014 até a versão atual).

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.

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

tinyint

O número de ID associado a state_description.

0 = INVISIBLE

1 = OPEN

2 = CLOSED

3 = COMPRESSED

state_description

nvarchar(60)

Descrição do estado persistente do grupo de linhas:

INVISIBLE – um segmento compactado oculto no processo de ter sido criado a partir dos dados em um repositório 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 Tuple Mover.

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 recriar 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 muitas vezes também é referenciado como uma tabela delta. Quando um rowgroup aberto está cheio, seu estado é alterado para CLOSED. Um rowgroup fechado é compactado no formato columnstore pelo Tuple Mover e o estado é alterado 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 Tuple Mover 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 para uma tabela se o usuário tem permissão de VIEW DEFINITION 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 Configuração de visibilidade de metadados.

Exemplos

O exemplo a seguir adiciona 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 localizar informações em 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;

Consulte também

Referência

Exibições do catálogo de objeto (Transact-SQL)

Exibições de catálogo (Transact-SQL)

sys.columns (Transact-SQL)

sys.all_columns (Transact-SQL)

sys.computed_columns (Transact-SQL)

sys.column_store_dictionaries (Transact-SQL)

sys.column_store_segments (Transact-SQL)

Conceitos

Consultando as perguntas frequentes do catálogo do sistema do SQL Server

Índices columnstore descritos

Índices columnstore descritos