sys.dm_db_column_store_row_group_physical_stats (Transact-SQL)sys.dm_db_column_store_row_group_physical_stats (Transact-SQL)

APLICA-SE A: simSQL Server simBanco de Dados SQL do Azure nãoAzure Synapse Analytics (SQL DW) nãoParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

Fornece informações atuais em nível de rowgroup sobre todos os índices columnstore no banco de dados atual.Provides current rowgroup-level information about all of the columnstore indexes in the current database.

Isso estende a exibição de catálogo Sys. (COLUMN_STORE_ROW_GROUPS Transact-)SQL.This extends the catalog view sys.column_store_row_groups (Transact-SQL).

Nome da colunaColumn name Tipo de dadosData type DescriçãoDescription
object_idobject_id intint ID da tabela subjacente.ID of the underlying table.
index_idindex_id intint ID deste índice columnstore na tabela object_id .ID of this columnstore index on object_id table.
partition_numberpartition_number intint ID da partição da tabela que contém row_group_id.ID of the table partition that holds row_group_id. Você pode usar o partition_number para adicionar esse DMV a sys.partitions.You can use partition_number to join this DMV to sys.partitions.
row_group_idrow_group_id intint ID deste grupo de linhas.ID of this row group. Para tabelas particionadas, isso é exclusivo na partição.For partitioned tables, this is unique within the partition.

-1 para uma parte final da memória.-1 for an in-memory tail.
delta_store_hobt_iddelta_store_hobt_id bigintbigint O hobt_id para um grupo de linhas no armazenamento Delta.The hobt_id for a row group in the delta store.

NULL se o grupo de linhas não estiver no repositório Delta.NULL if row group is not in the delta store.

NULL para a parte final de uma tabela na memória.NULL for tail of an in-memory table.
statestate tinyinttinyint Número de ID associado state_description.ID number associated state_description.

0 = INVISIBLE0 = INVISIBLE

1 = OPEN1 = OPEN

2 = CLOSED2 = CLOSED

3 = COMPRESSED3 = COMPRESSED

4 = MARCA PARA EXCLUSÃO4 = TOMBSTONE

COMPACTado é o único Estado que se aplica a tabelas na memória.COMPRESSED is the only state that applies to in-memory tables.
state_descstate_desc nvarchar(60)nvarchar(60) Descrição do estado do grupo de linhas:Description of the row group state:

INVISÍVEL-um grupo de linhas que está sendo compilado.INVISIBLE -A row group that is being built. Por exemplo:For example:
Um grupo de linhas no columnstore é invisível enquanto os dados estão sendo compactados.A row group in the columnstore is INVISIBLE while the data is being compressed. Quando a compactação é concluída, uma opção de metadados altera o estado do grupo de linhas columnstore de invisível para COMPACTado e o estado do grupo de linhas deltastore de CLOSED para marca para exclusão.When the compression is finished a metadata switch changes the state of the columnstore row group from INVISIBLE to COMPRESSED, and the state of the deltastore row group from CLOSED to TOMBSTONE.

ABRIR – um grupo de linhas deltastore que está aceitando novas linhas.OPEN - A deltastore row group that is accepting new rows. Um grupo de linhas aberto ainda está no formato rowstore e não foi compactado para o formato columnstore.An open row group is still in rowstore format and has not been compressed to columnstore format.

CLOSED-um grupo de linhas no armazenamento 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.CLOSED - A row group in the delta store that contains the maximum number of rows, and is waiting for the tuple mover process to compress it into the columnstore.

COMPACTado – um grupo de linhas que é compactado com compactação columnstore e armazenado no columnstore.COMPRESSED - A row group that is compressed with columnstore compression and stored in the columnstore.

Marca para exclusão-um grupo de linhas que estava anteriormente no deltastore e que não é mais usado.TOMBSTONE - A row group that was formerly in the deltastore and is no longer used.
total_rowstotal_rows bigintbigint Número de linhas fisicamente armazenadas no grupo de linhas.Number of rows physical stored in the row group. Para grupos de linhas compactados, isso inclui as linhas marcadas como excluídas.For compressed row groups, this includes the rows that are marked deleted.
deleted_rowsdeleted_rows bigintbigint Número de linhas fisicamente armazenadas em um grupo de linhas compactado que são marcadas para exclusão.Number of rows physically stored in a compressed row group that are marked for deletion.

0 para grupos de linhas que estão no repositório Delta.0 for row groups that are in the delta store.
size_in_bytessize_in_bytes bigintbigint Tamanho combinado, em bytes, de todas as páginas deste grupo de linhas.Combined size, in bytes, of all the pages in this row group. Esse tamanho não inclui o tamanho necessário para armazenar metadados ou dicionários compartilhados.This size does not include the size required to store metadata or shared dictionaries.
trim_reasontrim_reason tinyinttinyint Motivo que disparou o grupo de linhas COMPACTado para ter menos do que o número máximo de linhas.Reason that triggered the COMPRESSED row group to have less than the maximum number of rows.

0-UNKNOWN_UPGRADED_FROM_PREVIOUS_VERSION0 - UNKNOWN_UPGRADED_FROM_PREVIOUS_VERSION

1 - NO_TRIM1 - NO_TRIM

2-CARREGAMENTO EM MASSA2 - BULKLOAD

3-REORG3 - REORG

4-DICTIONARY_SIZE4 - DICTIONARY_SIZE

5-MEMORY_LIMITATION5 - MEMORY_LIMITATION

6-RESIDUAL_ROW_GROUP6 - RESIDUAL_ROW_GROUP

7 - STATS_MISMATCH7 - STATS_MISMATCH

8-EXCEDENTE8 - SPILLOVER
trim_reason_desctrim_reason_desc nvarchar(60)nvarchar(60) Descrição de trim_reason.Description of trim_reason.

0-UNKNOWN_UPGRADED_FROM_PREVIOUS_VERSION: Ocorreu ao atualizar da versão anterior do SQL ServerSQL Server.0 - UNKNOWN_UPGRADED_FROM_PREVIOUS_VERSION: Occurred when upgrading from the previous version of SQL ServerSQL Server.

1 - NO_TRIM: O grupo de linhas não foi cortado.1 - NO_TRIM: The row group was not trimmed. O grupo de linhas foi compactado com o máximo de 1.048.476 linhas.The row group was compressed with the maximum of 1,048,476 rows. O número de linhas pode ser menor se um subconjunto de linhas tiver sido excluído depois que o rowgroup Delta tiver sido fechadoThe number of rows could be less if a subset of rows was deleted after delta rowgroup was closed

2-CARREGAMENTO EM MASSA: O tamanho do lote de carregamento em massa limitou o número de linhas.2 - BULKLOAD: The bulk load batch size limited the number of rows.

3-REORG: Compactação forçada como parte do comando REORG.3 - REORG: Forced compression as part of REORG command.

4-DICTIONARY_SIZE: O tamanho do dicionário cresceu muito grande para compactar todas as linhas em conjunto.4 - DICTIONARY_SIZE: Dictionary size grew too big to compress all of the rows together.

5-MEMORY_LIMITATION: Não há memória suficiente disponível para compactar todas as linhas.5 - MEMORY_LIMITATION: Not enough available memory to compress all the rows together.

6-RESIDUAL_ROW_GROUP: Fechado como parte do último grupo de linhas com linhas < 1 milhão durante a operação de compilação do índice6 - RESIDUAL_ROW_GROUP: Closed as part of last row group with rows < 1 million during index build operation

STATS_MISMATCH: Somente para columnstore na tabela na memória.STATS_MISMATCH: Only for columnstore on in-memory table. Se as estatísticas indicaram incorretamente > = 1 milhão linhas qualificadas na parte final, mas encontramos menos, o rowgroup compactado terá < 1 milhão linhasIf stats incorrectly indicated >= 1 million qualified rows in the tail but we found fewer, the compressed rowgroup will have < 1 million rows

EXCEDENTE Somente para columnstore na tabela na memória.SPILLOVER: Only for columnstore on in-memory table. Se a parte final tiver > 1 milhão linhas qualificadas, as linhas do último lote restante serão compactadas se a contagem estiver entre 100 mil e 1 milhãoIf tail has > 1 million qualified rows, the last batch remaining rows are compressed if the count is between 100k and 1 million
transition_to_compressed_statetransition_to_compressed_state tinyinttinyint Mostra como esse rowgroup foi movido do deltastore para um estado compactado no columnstore.Shows how this rowgroup got moved from the deltastore to a compressed state in the columnstore.

1-NOT_APPLICABLE1- NOT_APPLICABLE

2 - INDEX_BUILD2 - INDEX_BUILD

3-TUPLE_MOVER3 - TUPLE_MOVER

4-REORG_NORMAL4 - REORG_NORMAL

5-REORG_FORCED5 - REORG_FORCED

6-CARREGAMENTO EM MASSA6 - BULKLOAD

7-MESCLAR7 - MERGE
transition_to_compressed_state_desctransition_to_compressed_state_desc nvarchar(60)nvarchar(60) NOT_APPLICABLE-a operação não se aplica ao deltastore.NOT_APPLICABLE - the operation does not apply to the deltastore. Ou, o rowgroup foi compactado antes da atualização para SQL Server 2016 (13.x)SQL Server 2016 (13.x) o caso em que o histórico não é preservado.Or, the rowgroup was compressed prior to upgrading to SQL Server 2016 (13.x)SQL Server 2016 (13.x) in which case the history is not preserved.

INDEX_BUILD-uma criação de índice ou recompilação de índice comprimiu o rowgroup.INDEX_BUILD - An index create or index rebuild compressed the rowgroup.

TUPLE_MOVER-o movimentador de tupla em execução em segundo plano compactou o rowgroup.TUPLE_MOVER - The tuple mover running in the background compressed the rowgroup. Isso acontece depois que o grupo de rowgroup muda de estado de aberto para fechado.This happens after the rowgroup changes state from OPEN to CLOSED.

REORG_NORMAL-a operação de reorganização, ALTER INDEX... REORG, moveu o rowgroup fechado do deltastore para o columnstore.REORG_NORMAL - The reorganization operation, ALTER INDEX ... REORG, moved the CLOSED rowgroup from the deltastore to the columnstore. Isso ocorreu antes que o motor de tupla tivesse tempo para mover o rowgroup.This occurred before the tuple-mover had time to move the rowgroup.

REORG_FORCED-esse rowgroup foi aberto no deltastore e foi forçado para o columnstore antes de ter um número completo de linhas.REORG_FORCED - This rowgroup was open in the deltastore and was forced into the columnstore before it had a full number of rows.

CARREGAMENTO em massa-uma operação de carregamento em massa compactou o rowgroup diretamente sem usar o deltastore.BULKLOAD - A bulk load operation compressed the rowgroup directly without using the deltastore.

MESCLAr – uma operação de mesclagem consolidou um ou mais grupos de rowgroup nesse rowgroup e, em seguida, executou a compactação columnstore.MERGE - A merge operation consolidated one or more rowgroups into this rowgroup and then performed the columnstore compression.
has_vertipaq_optimizationhas_vertipaq_optimization bitbit A otimização de VertiPaq melhora a compactação de columnstore reorganizando a ordem das linhas no rowgroup para obter maior compactação.Vertipaq optimization improves columnstore compression by rearranging the order of the rows in the rowgroup to achieve higher compression. Essa otimização ocorre automaticamente na maioria dos casos.This optimization occurs automatically in most cases. Há dois casos a otimização de VertiPaq não é usada:There are two cases Vertipaq optimization is not used:
a.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 de VertiPaq é ignorada para minimizar as alterações no índice de mapeamento;when a delta rowgroup moves into the columnstore and there are one or more nonclustered indexes on the columnstore index - in this case Vertipaq optimization is skipped to minimizes changes to the mapping index;
b.b. para índices columnstore em tabelas com otimização de memória.for columnstore indexes on memory-optimized tables.

0 = Não0 = No

1 = Sim1 = Yes
geraçãogeneration bigintbigint Geração de grupo de linhas associada a este grupo de linhas.Row group generation associated with this row group.
created_timecreated_time datetime2datetime2 Hora do relógio para quando esse rowgroup foi criado.Clock time for when this rowgroup was created.

NULL-para um índice columnstore em uma tabela na memória.NULL - for a columnstore index on an in-memory table.
 
closed_timeclosed_time datetime2datetime2 Hora do relógio para quando este rowgroup foi fechado.Clock time for when this rowgroup was closed.

NULL-para um índice columnstore em uma tabela na memória.NULL - for a columnstore index on an in-memory table.
 
     

ResultadosResults

Retorna uma linha para cada rowgroup no banco de dados atual.Returns one row for each rowgroup in the current database.

PermissõesPermissions

Requer CONTROL a permissão na tabela e VIEW DATABASE STATE a permissão no banco de dados.Requires CONTROL permission on the table and VIEW DATABASE STATE permission on the database.

ExemplosExamples

A.A. Calcule a fragmentação para decidir quando reorganizar ou recriar um índice columnstore.Calculate fragmentation to decide when to reorganize or rebuild a columnstore index.

Para índices columnstore, a porcentagem de linhas excluídas é uma boa medida para a fragmentação em um rowgroup.For columnstore indexes, the percent of deleted rows is a good measure for the fragmentation in a rowgroup. Quando a fragmentação for de 20% ou mais, recomendamos remover as linhas excluídas.When the fragmentation is 20% or more we recommend removing the deleted rows. Para obter mais exemplos, consulte reorganizar e recompilar índices.For more examples, see Reorganize and Rebuild Indexes.

Este exemplo une Sys. dm _db_column_store_row_group_physical_stats a outras tabelas do sistema e, em seguida, Fragmentation calcula a coluna como uma estimativa da eficiência de cada grupo de linhas no banco de dados atual.This example joins sys.dm_db_column_store_row_group_physical_stats with other system tables and then calculates the Fragmentation column as an estimate of the efficiency of each row group in the current database. Para localizar informações em uma única tabela, remova os hifens de comentário na frente da cláusula Where e forneça um nome de tabela.To find information on a single table remove the comment hyphens in front of the WHERE clause and provide a table name.

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  
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;  

Consulte tambémSee Also

Exibições de catálogo de objeto(Transact-SQL) Object Catalog Views (Transact-SQL)
Exibições de catálogo (Transact-SQL) Catalog Views (Transact-SQL)
Arquitetura de índices columnstore Columnstore Index Architecture
Consultando as perguntas frequentes sobre o catálogo do sistema SQL Server Querying the SQL Server System Catalog FAQ
sys.columns (Transact-SQL) sys.columns (Transact-SQL)
sys.all_columns (Transact-SQL) sys.all_columns (Transact-SQL)
sys. computed_columns (Transact-SQL) Sys. column_store_dictionaries (Transact-SQL) sys.computed_columns (Transact-SQL) sys.column_store_dictionaries (Transact-SQL)
sys.column_store_segments (Transact-SQL)sys.column_store_segments (Transact-SQL)