Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Applies to: SQL Server 2016 (13.x) and later
Azure SQL Database
Azure SQL Managed Instance
Fornece informações atuais no nível do rowgroup sobre todos os índices columnstore no banco de dados atual.
This DMV extends the catalog view sys.column_store_row_groups.
Column name | Data type | Description |
---|---|---|
object_id |
int | ID da tabela subjacente. |
index_id |
int | ID deste índice columnstore na object_id tabela. |
partition_number |
int | ID da partição de tabela que contém row_group_id . Você pode usar partition_number para ingressar nesta DMV sys.partitions |
row_group_id |
int | ID desse grupo de linhas. Para tabelas particionadas, o valor é exclusivo dentro da partição.-1 para uma cauda na memória. |
delta_store_hobt_id |
bigint | O hobt_id para um 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 na memória. |
state |
tinyint | Número de ID associado state_description .0 = INVISIBLE 1 = OPEN 2 = CLOSED 3 = COMPRESSED 4 = TOMBSTONE COMPRESSED é o único estado que se aplica a tabelas na memória. |
state_desc |
nvarchar(60) | Descrição do estado do grupo de linhas:0
-
INVISIBLE - Um grupo de linhas que está sendo criado. For example:Um grupo de linhas no columnstore está INVISIBLE enquanto os dados estão sendo compactados. Quando a compactação é concluída, uma opção de metadados altera o estado do grupo de linhas columnstore de INVISIBLE para COMPRESSED , e o estado do grupo de linhas deltastore de CLOSED para TOMBSTONE .1
-
OPEN - Um grupo de linhas deltastore que está aceitando novas linhas. Um grupo de linhas abertas ainda está no formato rowstore e não foi compactado no formato columnstore.2
-
CLOSED - Um grupo de linhas no repositório delta que contém o número máximo de linhas e está aguardando o processo de movimentação de tupla compactá-lo no columnstore.3
-
COMPRESSED - Um grupo de linhas compactado com compactação columnstore e armazenado no columnstore.4
-
TOMBSTONE - Um grupo de linhas que anteriormente estava no deltastore e não é mais usado. |
total_rows |
bigint | Número de linhas armazenadas fisicamente no grupo de linhas. Para grupos de linhas compactados. Inclui as linhas marcadas como excluídas. |
deleted_rows |
bigint | Número de linhas fisicamente armazenadas em um grupo de linhas compactado que são marcadas para exclusão.0 para grupos de linhas que estão no repositório delta.Para índices columnstore não clusterizados, esse valor não inclui linhas excluídas armazenadas no buffer de exclusão. For more information, and to find the number of deleted rows in the delete buffer, see sys.internal_partitions. |
size_in_bytes |
bigint | 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. |
trim_reason |
tinyint | Motivo que disparou o COMPRESSED grupo de linhas para ter menos do que o número máximo de linhas.0 - UNKNOWN_UPGRADED_FROM_PREVIOUS_VERSION 1 - NO_TRIM 2 - BULKLOAD 3 - REORG 4 - DICTIONARY_SIZE 5 - MEMORY_LIMITATION 6 - RESIDUAL_ROW_GROUP 7 - STATS_MISMATCH 8 - SPILLOVER 9 - AUTO_MERGE |
trim_reason_desc |
nvarchar(60) | Descrição do trim_reason .0
-
UNKNOWN_UPGRADED_FROM_PREVIOUS_VERSION : ocorreu ao atualizar da versão anterior do SQL Server.1
-
NO_TRIM : o grupo de linhas não foi cortado. O grupo de linhas foi compactado com o máximo de 1.048.576 linhas. O número de linhas poderia ser menor se um subconjunto de linhas fosse excluído depois que o grupo de linhas delta fosse fechado2
-
BULKLOAD : o tamanho do lote de carregamento em massa limitou o número de linhas.3
-
REORG : compactação forçada como parte do REORG comando.4
-
DICTIONARY_SIZE : o tamanho do dicionário cresceu muito grande para compactar todas as linhas juntas.5
-
MEMORY_LIMITATION : não há memória disponível suficiente para compactar todas as linhas juntas.6
-
RESIDUAL_ROW_GROUP : fechado como parte do último grupo de linhas com linhas < de 1 milhão durante a operação de build de índice.Note: A partition build with multiple cores can result in more than one trim of this type. 7
-
STATS_MISMATCH : somente para columnstore na tabela na memória. Se as estatísticas indicarem >incorretamente = 1 milhão de linhas qualificadas na cauda, mas encontrarmos menos, o rowgroup compactado terá < 1 milhão de linhas8
-
SPILLOVER : somente para columnstore na tabela na memória. Se a cauda tiver > 1 milhão de linhas qualificadas, as últimas linhas restantes do lote serão compactadas se a contagem estiver entre 100.000 e 1 milhão9
-
AUTO_MERGE : uma operação de mesclagem do Tuple Mover em execução em segundo plano consolidou um ou mais rowgroups nesse rowgroup. |
transition_to_compressed_state |
tinyint | Mostra como esse rowgroup foi movido do deltastore para um estado compactado no columnstore.1 - NOT_APPLICABLE 2 - INDEX_BUILD 3 - TUPLE_MOVER 4 - REORG_NORMAL 5 - REORG_FORCED 6 - BULKLOAD 7 - MERGE |
transition_to_compressed_state_desc |
nvarchar(60) |
1
-
NOT_APPLICABLE - a operação não se aplica ao deltastore. Ou, o rowgroup foi compactado antes de atualizar para o SQL Server 2016 (13.x) nesse caso, o histórico não é preservado.2
-
INDEX_BUILD - Uma criação de índice ou recompilação de índice compactou o rowgroup.3
-
TUPLE_MOVER - O motor de tupla em execução em segundo plano compactou o rowgroup. O mover de tupla ocorre depois que o rowgroup altera o estado de OPEN para CLOSED .4
-
REORG_NORMAL - A operação de reorganização moveu ALTER INDEX ... REORG o CLOSED rowgroup do deltastore para o columnstore. Isso ocorreu antes que o motor de tupla tivesse tempo de mover o rowgroup.5
-
REORG_FORCED - Esse rowgroup foi aberto no deltastore e foi forçado a entrar no columnstore antes de ter um número total de linhas.6
-
BULKLOAD - Uma operação de carregamento em massa compactou o rowgroup diretamente sem usar o deltastore.7
-
MERGE - Uma operação de mesclagem consolidou um ou mais rowgroups nesse rowgroup e, em seguida, executou a compactação columnstore. |
has_vertipaq_optimization |
bit | A otimização do VertiPaq melhora a compactação columnstore reorganizando a ordem das linhas no rowgroup para obter uma compactação mais alta. Essa otimização ocorre automaticamente na maioria dos casos. Há dois casos em que a otimização do VertiPaq não é usada: a. quando um rowgroup delta se move para o columnstore e há um ou mais índices não clusterizados no índice columnstore – nesse caso, a otimização VertiPaq é ignorada para minimizar as alterações no índice de mapeamento; b. para índices columnstore em tabelas com otimização de memória. 0 = Não1 = Sim |
generation |
bigint | Geração de grupo de linhas associada a esse grupo de linhas. |
created_time |
datetime2 | Hora do relógio para quando esse rowgroup foi criado.NULL – para um índice columnstore em uma tabela na memória. |
closed_time |
datetime2 | Hora do relógio para quando este rowgroup foi fechado.NULL – para um índice columnstore em uma tabela na memória. |
Results
Retorna uma linha para cada rowgroup no banco de dados atual.
Permissions
Requer CONTROL
permissão na tabela e VIEW DATABASE STATE
permissão no banco de dados.
Permissões do SQL Server 2022 e posteriores
Requer permissão VIEW DATABASE PERFORMANCE STATE
no banco de dados.
Examples
A. Calcular a fragmentação para decidir quando reorganizar ou recompilar um índice columnstore
Para índices columnstore, a porcentagem de linhas excluídas é uma boa medida para a fragmentação em um rowgroup. Quando a fragmentação for de 20% ou mais, remova as linhas excluídas. Para obter mais exemplos, consulte Otimizar a manutenção do índice para melhorar o desempenho da consulta e reduzir o consumo de recursos.
Este exemplo une-se a outras tabelas sys.dm_db_column_store_row_group_physical_stats
do sistema e, em seguida, calcula a Fragmentation
coluna como uma estimativa da eficiência de cada grupo de linhas no banco de dados atual. Para encontrar informações em uma única tabela, remova os hífens de comentário na frente da WHERE
cláusula 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 * (ISNULL(deleted_rows, 0)) / NULLIF (total_rows, 0) AS 'Fragmentation'
FROM sys.indexes AS i
INNER JOIN sys.dm_db_column_store_row_group_physical_stats 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;
Related content
- Exibições do catálogo de objetos (Transact-SQL)
- Exibições de catálogo do sistema (Transact-SQL)
- Arquitetura de índices columnstore
- Consultando as perguntas frequentes do catálogo do sistema do SQL Server
- sys.columns
- sys.all_columns
- sys.computed_columns
- sys.column_store_dictionaries
- sys.column_store_segments