Partilhar via


sys.dm_db_xtp_checkpoint_files (Transact-SQL)

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada SQL do Azure

Apresenta informações sobre In-Memory ficheiros de checkpoint OLTP, incluindo tamanho do ficheiro, localização física e o ID da transação.

Observação

Para o ponto de controlo atual que ainda não fechou, a coluna de estado de sys.dm_db_xtp_checkpoint_files estará EM CONSTRUÇÃO para novos ficheiros. Um ponto de controlo fecha automaticamente quando há crescimento suficiente do registo de transações desde o último ponto de controlo, ou se emitir o CHECKPOINT comando. Para obter mais informações, consulte CHECKPOINT (Transact-SQL).

Um grupo de ficheiros otimizado para memória utiliza internamente ficheiros apenas adicionáveis para armazenar linhas inseridas e eliminadas para tabelas em memória. Existem dois tipos de ficheiros. Um ficheiro de dados contém linhas inseridas enquanto um ficheiro delta contém referências a linhas eliminadas.

O SQL Server 2014 (12.x) é substancialmente diferente das versões mais recentes e é discutido no SQL Server 2014.

Para mais informações, consulte Criação e Gestão de Armazenamento para Memory-Optimized Objetos.

SQL Server 2016 (13.x) e posteriores

A tabela seguinte descreve as colunas para sys.dm_db_xtp_checkpoint_files, começando pelo SQL Server 2016 (13.x).

Nome da coluna Tipo Description
container_id int O ID do contentor (representado como um ficheiro com o tipo FILESTREAM em sys.database_files) do qual o ficheiro de dados ou delta faz parte. Junta-se a file_id em sys.database_files (Transact-SQL).
container_guid uniqueidentifier GUID do Contentor, do qual fazem parte a raiz, o ficheiro de dados ou delta. Junta-se com file_guid na sys.database_files mesa.
checkpoint_file_id uniqueidentifier GUID do ficheiro do ponto de controlo.
relative_file_path Nvarchar(256) Caminho do ficheiro em relação ao contentor para onde está mapeado.
file_type smallint -1 GRÁTIS

0 para ficheiro DATA.

1 para o ficheiro DELTA.

2 para ficheiro ROOT

3 para ficheiro BIG DATA
descrição_do_tipo_de_ficheiro Nvarchar(60) GRATUITO - Todos os ficheiros mantidos como GRATUITOS estão disponíveis para alocação. Os ficheiros gratuitos podem variar em tamanho consoante as necessidades previstas pelo sistema. O tamanho máximo é de 1 GB.

DADOS - Os ficheiros de dados contêm linhas que foram inseridas em tabelas otimizadas para memória.

DELTA - Os ficheiros Delta contêm referências a linhas em ficheiros de dados que foram eliminados.

ROOT - Os ficheiros raiz contêm metadados do sistema para objetos otimizados para memória e compilados nativamente.

DADOS GRANDES - Os ficheiros de dados grandes contêm valores inseridos nas colunas (n)varchar(max) e varbinary(max), bem como os segmentos de coluna que fazem parte dos índices de columnstore em tabelas otimizadas para memória.
internal_storage_slot int O índice do ficheiro no array de armazenamento interno. NULL para ROOT ou para estados diferentes de 1.
checkpoint_pair_file_id uniqueidentifier Ficheiro DATA ou DELTA correspondente. NULL para ROOT.
file_size_in_bytes bigint Tamanho do ficheiro no disco.
file_size_used_in_bytes bigint Para pares de ficheiros de checkpoints que ainda estão a ser preenchidos, esta coluna será atualizada após o próximo checkpoint.
logical_row_count bigint Para Dados, número de linhas inseridas.

Para Delta, número de linhas eliminadas após contabilizar a tabela de drop.

Para Root, NULL.
state smallint 0 - PRÉ-CRIADO

1 - EM CONSTRUÇÃO

2 - ATIVO

3 - ALVO DE FUSÃO

8 - À ESPERA DE TRUNCAMENTO DO TRONCO
descrição_do_estado Nvarchar(60) PRÉ-CRIADO - Vários ficheiros de checkpoint são pré-alocados para minimizar ou eliminar quaisquer esperas para alocar novos ficheiros à medida que as transações são executadas. Estes ficheiros podem variar em tamanho e são criados consoante as necessidades estimadas da carga de trabalho. Não contêm dados. Isto representa uma sobrecarga de armazenamento em bases de dados com um grupo de ficheiros MEMORY_OPTIMIZED_DATA.

EM CONSTRUÇÃO - Estes ficheiros de checkpoint estão em construção, ou seja, estão a ser preenchidos com base nos registos de registo gerados pela base de dados e ainda não fazem parte de um checkpoint.

ATIVO - Estes contêm as linhas inseridas/eliminadas de checkpoints fechados anteriormente. Contêm o conteúdo das tabelas que são lidas na memória antes de aplicarem a parte ativa do registo de transações no reinício da base de dados. Esperamos que o tamanho destes ficheiros de checkpoint seja aproximadamente 2x o tamanho em memória das tabelas otimizadas para memória, assumindo que a operação de fusão acompanha a carga de trabalho transacional.

MERGE TARGET - O alvo das operações de merge - estes ficheiros de checkpoint armazenam as linhas de dados consolidadas dos ficheiros de origem identificados pela política de merge. Uma vez instalada a fusão, o MERGE TARGET transita para o estado ATIVO.

AGUARDANDO TRUNCAMENTO DE LOGS - Depois de a fusão estar instalada e o MERGE TARGET CFP fazer parte do checkpoint durável, os ficheiros de checkpoint de origem da fusão transitam para este estado. Ficheiros neste estado são necessários para a correção operacional da base de dados com tabela otimizada para memória. Por exemplo, recuperar de um ponto de controlo durável para voltar atrás no tempo.
lower_bound_tsn bigint Limite inferior da transação no ficheiro; NULL se não estiver em (1, 3).
upper_bound_tsn bigint Limite superior da transação no ficheiro; NULL se não estiver em (1, 3).
begin_checkpoint_id bigint Identificação do ponto de controlo inicial.
end_checkpoint_id bigint Identificação do posto de controlo final.
last_updated_checkpoint_id bigint ID do último posto de controlo que atualizou este ficheiro.
encryption_status smallint 0, 1, 2
encryption_status_desc Nvarchar(60) 0 => NÃO ENCRIPTADO

1 => ENCRIPTADO COM A CHAVE 1

2 => ENCRIPTADO COM A CHAVE 2. Válido apenas para ficheiros ativos.

SQL Server 2014 (12.x)

A tabela seguinte descreve as colunas para sys.dm_db_xtp_checkpoint_files, para SQL Server 2014 (12.x).

Nome da coluna Tipo Description
container_id int O ID do contentor (representado como um ficheiro com o tipo FILESTREAM em sys.database_files) do qual o ficheiro de dados ou delta faz parte. Junta-se a file_id em sys.database_files (Transact-SQL).
container_guid uniqueidentifier O GUID do contentor do qual faz parte o ficheiro de dados ou delta.
checkpoint_file_id GUID ID dos dados ou ficheiro delta.
relative_file_path Nvarchar(256) Caminho para o ficheiro de dados ou delta, em relação à localização do contentor.
file_type tinyint 0 para ficheiro de dados.

1 para o ficheiro Delta.

NULL se a coluna de estado estiver definida para 7.
descrição_do_tipo_de_ficheiro Nvarchar(60) O tipo de ficheiro: DATA_FILE, DELTA_FILE, ou NULL se a coluna de estado estiver definida para 7.
internal_storage_slot int O índice do ficheiro no array de armazenamento interno. NULL se a coluna de estado não for 2 ou 3.
checkpoint_pair_file_id uniqueidentifier Os dados correspondentes ou ficheiro delta.
file_size_in_bytes bigint Tamanho do ficheiro que é utilizado. NULL se a coluna de estado estiver definida para 5, 6 ou 7.
file_size_used_in_bytes bigint Tamanho usado do ficheiro que é utilizado. NULL se a coluna de estado estiver definida para 5, 6 ou 7.

Para pares de ficheiros de checkpoints que ainda estão a ser preenchidos, esta coluna será atualizada após o próximo checkpoint.
inserted_row_count bigint Número de linhas no ficheiro de dados.
deleted_row_count bigint Número de linhas eliminadas no ficheiro delta.
drop_table_deleted_row_count bigint O número de linhas nos ficheiros de dados afetadas por uma tabela de drop. Aplica-se a ficheiros de dados quando a coluna de estado é igual a 1.

Mostra as contagens de linhas eliminadas de tabelas(ões) eliminadas. As estatísticas drop_table_deleted_row_count são compiladas depois de concluída a recolha de lixo de memória das linhas das tabelas(es) abandonadas e de um checkpoint ser tomado. Se reiniciar o SQL Server antes das estatísticas das tabelas de drop serem refletidas nesta coluna, as estatísticas serão atualizadas como parte da recuperação. O processo de recuperação não carrega linhas de tabelas eliminadas. As estatísticas das tabelas descartadas são compiladas durante a fase de carregamento e reportadas nesta coluna quando a recuperação termina.
state int 0 - PRÉ-CRIADO

1 - EM CONSTRUÇÃO

2 - ATIVO

3 - ALVO DE FUSÃO

4 - FONTE FUNDIDA

5 - NECESSÁRIO PARA APOIO/HA

6 - EM TRANSIÇÃO PARA LÁPIDE

7 - LÁPIDE
descrição_do_estado Nvarchar(60) PRÉ-CRIADO - Um pequeno conjunto de pares de dados e ficheiros delta, também conhecidos como pares de ficheiros checkpoint (CFPs), é mantido pré-alocado para minimizar ou eliminar quaisquer esperas para alocar novos ficheiros à medida que as transações são executadas. São criados com um tamanho de ficheiro de dados de 128 MB e tamanho delta de 8 MB, mas não contêm dados. O número de CFPs é calculado como o número de processadores lógicos ou escalonadores (um por núcleo, sem máximo) com um mínimo de 8. Trata-se de uma sobrecarga fixa de armazenamento em bases de dados com tabelas otimizadas para memória.

EM CONSTRUÇÃO - Conjunto de CFPs que armazenam linhas de dados recém-inseridas e possivelmente eliminadas desde o último checkpoint.

ATIVO - Estes contêm as linhas inseridas e eliminadas de checkpoints fechados anteriormente. Estes CFPs contêm todas as linhas inseridas e eliminadas necessárias antes de aplicar a parte ativa do registo de transações no reinício da base de dados. O tamanho destes CFPs será aproximadamente duas vezes o tamanho em memória das tabelas otimizadas para memória, assumindo que a operação de fusão está em dia com a carga de trabalho transacional.

META DE FUSÃO - O CFP armazena as linhas de dados consolidadas do(s) CFP(s) identificadas pela política de fusão. Uma vez instalada a fusão, o MERGE TARGET transita para o estado ATIVO.

FONTE MERGED - Uma vez instalada a operação de merge, os CFPs de origem são marcados como MERGED SOURCE. Note-se que o avaliador de políticas de fusão pode identificar múltiplas fusões, mas um CFP só pode participar numa operação de fusão.

NECESSÁRIO PARA BACKUP/HA - Uma vez instalada a fusão e o MERGE TARGET CFP faz parte do Durable Checkpoint, os CFPs da fonte de merge transitam para este estado. Os CFPs neste estado são necessários para a correção operacional da base de dados com tabela otimizada para memória. Por exemplo, recuperar de um ponto de controlo durável para voltar atrás no tempo. Um CFP pode ser marcado para recolha de lixo assim que o ponto de truncamento log ultrapassa o seu intervalo de transações.

EM TRANSIÇÃO PARA TOMBSTONE - Estas CFPs não são necessárias pelo motor OLTP In-Memory e podem ser recolhidas em lixo. Este estado indica que estes CFPs estão à espera que o thread de fundo os faça a transição para o estado seguinte, que é o TOMBSTONE.

TOMBSTONE - Estes CFPs estão à espera de serem recolhidos pelo coletor de lixo do filestream. (sp_filestream_force_garbage_collection (Transact-SQL))
lower_bound_tsn bigint O limite inferior das transações contidas no ficheiro. NULL se a coluna de estado for diferente de 2, 3 ou 4.
upper_bound_tsn bigint O limite superior das transações contidas no ficheiro. NULL se a coluna de estado for diferente de 2, 3 ou 4.
last_backup_page_count int Contagem lógica de páginas que é determinada na última cópia de segurança. Aplica-se quando a coluna de estado está definida para 2, 3, 4 ou 5. NULL se a contagem de páginas não for conhecida.
delta_watermark_tsn int A transação do último ponto de controlo que escreveu neste ficheiro delta. Esta é a marca de água para o ficheiro delta.
last_checkpoint_recovery_lsn nvarchar(23) Número de sequência do registo de recuperação do último ponto de controlo que ainda precisa do ficheiro.
tombstone_operation_lsn nvarchar(23) O ficheiro será apagado assim que o tombstone_operation_lsn ficar atrás do número de sequência do troncamento logarítmico.
logical_deletion_log_block_id bigint Aplica-se apenas ao estado 5.

Permissions

Requer permissão VIEW DATABASE STATE no banco de dados.

Permissões para SQL Server 2022 e posterior

É necessária a permissão VIEW DATABASE PERFORMANCE STATE no banco de dados.

Casos de uso

Pode estimar o armazenamento total utilizado por In-Memory OLTP da seguinte forma:

-- total storage used by In-Memory OLTP  
SELECT SUM (file_size_in_bytes)/(1024*1024) as file_size_in_MB  
FROM sys.dm_db_xtp_checkpoint_files;

Para ver uma divisão da utilização do armazenamento por estado e tipo de ficheiro, execute a seguinte consulta:

SELECT state_desc  
 , file_type_desc  
 , COUNT(*) AS [count]  
 , SUM(file_size_in_bytes) / 1024 / 1024 AS [on-disk size MB]   
FROM sys.dm_db_xtp_checkpoint_files  
GROUP BY state, state_desc, file_type, file_type_desc  
ORDER BY state, file_type;