Compartilhar via


sys.column_store_row_groups (Transact-SQL)

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada de SQL do AzureBanco de dados SQL no Microsoft Fabric

Fornece informações de índice columnstore por segmento.

Para índices columnstore clusterizados, 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 A ID do índice columnstore.
partition_number int A partição de tabela que contém o grupo de linhas identificado por row_group_id. Use partition_number para ingressar sys.partitions.
row_group_id int O número do grupo de linhas associado a esse grupo de linhas. Esse número é exclusivo dentro da partição.

-1 = parte final de uma tabela com otimização de memória.
delta_store_hobt_id bigint O hobt_id para um OPEN grupo de linhas 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 com otimização de memória.
state tinyint Um número que descreve o estado do grupo de linhas.

0 = INVISIBLE

1 = OPEN

2 = CLOSED

3 = COMPRESSED

4 = TOMBSTONE
state_description nvarchar(60) Descrição do estado do grupo de linhas:

INVISIBLE - Um segmento compactado oculto no processo de criação de dados em um repositório delta. As ações de leitura usam 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 novas linhas. Um grupo de linhas abertas ainda está no formato rowstore e não é compactado no formato columnstore.

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

COMPRESSED - Um grupo de linhas que é preenchido e compactado.
total_rows bigint Total de linhas fisicamente armazenadas no grupo de linhas. As linhas excluídas ainda podem ser armazenadas. O número máximo de linhas em um grupo de linhas é 1.048.576.
deleted_rows bigint Total de linhas no grupo de linhas marcadas como excluídas, mas que permanecem armazenadas. Esse valor é sempre 0 para grupos de linhas delta.

Para índices columnstore não clusterizados, esse valor não inclui linhas excluídas armazenadas no buffer de exclusão. Para obter mais informações e localizar o número de linhas excluídas no buffer de exclusão, consulte sys.internal_partitions.
size_in_bytes bigint Tamanho em bytes de todos os dados desse grupo de linhas (sem incluir metadados ou dicionários compartilhados), para rowgroups de repositório delta e columnstore.

Comentários

Retorna uma linha para cada grupo de linhas columnstore para cada partição de cada tabela que tem um índice columnstore clusterizado ou não clusterizado.

Use sys.column_store_row_groups para descobrir quantas linhas estão 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 REBUILD cláusula da ALTER INDEX instrução.

O columnstore atualizável insere primeiro novos dados em um rowgroup aberto, que está no formato rowstore, e também às vezes é conhecido como uma tabela delta. Depois que um rowgroup aberto estiver cheio, seu estado será alterado para CLOSED. Um rowgroup fechado é compactado no formato columnstore pelo mover 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 mover de tupla também desaloca todos os rowgroups nos quais cada linha é excluída. Os rowgroups desalocados são marcados como TOMBSTONE. Para executar o mover de tupla imediatamente, use a REORGANIZE cláusula da ALTER INDEX instrução.

Quando um grupo de linhas columnstore é preenchido, ele é compactado e deixa de aceitar novas linhas. Quando você exclui linhas 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 a configuração de visibilidade de metadados.

Exemplos

O exemplo a seguir une a exibição sys.column_store_row_groups e outras exibições do sistema para retornar informações sobre índices columnstore clusterizados. A percent_full coluna é uma estimativa da eficiência do grupo de linhas.

SELECT i.object_id,
       OBJECT_SCHEMA_NAME(i.object_id) AS schema_name,
       OBJECT_NAME(i.object_id) AS table_name,
       i.name AS index_name,
       i.type_desc AS index_type_desc,
       rg.partition_number,
       rg.row_group_id,
       rg.state_description,
       rg.total_rows,
       rg.deleted_rows,
       rg.size_in_bytes,
       100 * (rg.total_rows - ISNULL(rg.deleted_rows, 0)) / total_rows AS percent_full
FROM sys.indexes AS i
     INNER JOIN sys.column_store_row_groups AS rg
         ON i.object_id = rg.object_id
        AND i.index_id = rg.index_id
WHERE INDEXPROPERTY(i.object_id, i.name, 'IsClustered') = 1
ORDER BY schema_name, table_name, index_name, row_group_id;

Para obter mais informações, consulte Verificar a fragmentação de um índice columnstore.