Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a: SQL Server 2016 (13.x) e versões
posteriores Azure SQL Database
AzureSQL Managed Instance
SQL database in Microsoft Fabric
Fornece informações atuais no nível do grupo de linhas sobre todos os índices columnstore no banco de dados atual.
Este Detran estende a visualização do catálogo sys.column_store_row_groups.
| Nome da coluna | Tipo de dados | 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_ido . Você pode usar partition_number para aderir a este Detran para sys.partitions |
row_group_id |
int | ID deste 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 cauda de uma tabela na memória. |
state |
tinyint | Número de identificação associado state_description.0 = INVISIBLE1= OPEN2 = CLOSED3 = COMPRESSED4 = TOMBSTONECOMPRESSED é 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 construído. Por exemplo:Um grupo de linhas no columnstore está INVISIBLE enquanto os dados estão sendo compactados. Quando a compactação termina, 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 para o 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 para compactá-lo no columnstore.3
-
COMPRESSED - Um grupo de linhas que é 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 fisicamente armazenadas no grupo de linhas. Para grupos de linhas compactadas. Inclui as linhas marcadas como excluídas. |
deleted_rows |
bigint | Número de linhas fisicamente armazenadas em um grupo de linhas compactadas que estã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. Para obter mais informações e para localizar o número de linhas excluídas no buffer de exclusão, consulte sys.internal_partitions. |
size_in_bytes |
bigint | Tamanho combinado, em bytes, de todas as páginas deste grupo de linhas. Esse tamanho não inclui o tamanho necessário para armazenar metadados ou dicionários compartilhados. |
trim_reason |
tinyint | Motivo que fez com que o COMPRESSED grupo de linhas tivesse menos do que o número máximo de linhas.0 - UNKNOWN_UPGRADED_FROM_PREVIOUS_VERSION1 - NO_TRIM2 - BULKLOAD3 - REORG4 - DICTIONARY_SIZE5 - MEMORY_LIMITATION6 - RESIDUAL_ROW_GROUP7 - STATS_MISMATCH8 - SPILLOVER9 - AUTO_MERGE |
trim_reason_desc |
nvarchar(60) | Descrição de 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 comprimido 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 após o fechamento do grupo de linhas delta2
-
BULKLOAD: O tamanho do lote de carga em massa limitou o número de linhas.3
-
REORG: Compressão forçada como parte do REORG comando.4
-
DICTIONARY_SIZE: O tamanho do dicionário cresceu demais para comprimir todas as linhas juntas.5
-
MEMORY_LIMITATION: Não há memória disponível suficiente para comprimir todas as linhas juntas.6
-
RESIDUAL_ROW_GROUP: Fechado como parte do grupo da última linha com linhas 1 milhão durante a < operação de compilação do índice.Nota: Uma compilação de partição com vários núcleos pode resultar em mais de um trim desse tipo. 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 grupo de linhas compactado terá < de 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 grupos de linhas nesse grupo de linhas. |
transition_to_compressed_state |
tinyint | Mostra como esse grupo de linhas foi movido do deltastore para um estado compactado no columnstore.1 - NOT_APPLICABLE2 - INDEX_BUILD3 - TUPLE_MOVER4 - REORG_NORMAL5 - REORG_FORCED6 - BULKLOAD7 - MERGE |
transition_to_compressed_state_desc |
nvarchar(60) |
1
-
NOT_APPLICABLE - A operação não se aplica ao DeltaStore. Ou, o grupo de linhas foi compactado antes de atualizar para o SQL Server 2016 (13.x), caso em que o histórico não é preservado.2
-
INDEX_BUILD - Uma criação de índice ou reconstrução de índice compactou o grupo de linhas.3
-
TUPLE_MOVER - O movimentador de tupla em execução em segundo plano comprimiu o grupo de linhas. Tuple mover acontece depois que o grupo de linhas muda de estado de OPEN para CLOSED.4
-
REORG_NORMAL - A operação de reorganização, ALTER INDEX ... REORG, moveu o CLOSED rowgroup do deltastore para o columnstore. Isso ocorreu antes que o tuple-mover tivesse tempo para mover o grupo de linhas.5
-
REORG_FORCED - Este grupo de linhas estava aberto no deltastore e foi forçado a entrar no columnstore antes de ter um número completo de linhas.6
-
BULKLOAD - Uma operação de carga em massa compactou o grupo de linhas diretamente sem usar o deltastore.7
-
MERGE - Uma operação de mesclagem consolidou um ou mais grupos de linhas nesse grupo de linhas 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 grupo de linhas para obter maior compressão. Esta otimização ocorre automaticamente na maioria dos casos. Há dois casos em que a otimização VertiPaq não é usada: a. quando um grupo de linhas delta se move para o columnstore e há um ou mais índices não clusterizados no índice columnstore - neste 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 este grupo de linhas. |
created_time |
datetime2 | Hora do relógio para quando este grupo de linhas foi criado.NULL - para um índice columnstore em uma tabela na memória. |
closed_time |
datetime2 | Hora do relógio para quando este grupo de linhas foi fechado.NULL - para um índice columnstore em uma tabela na memória. |
Results
Retorna uma linha para cada grupo de linhas no banco de dados atual.
Permissions
Requer CONTROL permissão na tabela e VIEW DATABASE STATE permissão no banco de dados.
Permissões para SQL Server 2022 e posterior
Requer permissão VIEW DATABASE PERFORMANCE STATE no banco de dados.
Examples
A. Calcular a fragmentação para decidir quando reorganizar ou reconstruir um índice columnstore
Para índices columnstore, a porcentagem de linhas excluídas é uma boa medida para a fragmentação em um grupo de linhas. 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 se une sys.dm_db_column_store_row_group_physical_stats a outras tabelas 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 o comentário hífenes 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;