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)