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.

Note

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.

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

Nome da coluna Tipo Descrição
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 - MERGE ALVO

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 fusão - estes ficheiros de checkpoint armazenam as linhas de dados consolidadas dos ficheiros de origem identificados pela política de fusão. Uma vez instalada a fusão, o MERGE TARGET transita para o estado ATIVO.

AGUARDANDO TRUNCAMENTO DO LOG - Uma vez instalada a fusão e o MERGE CFP TARGET faz parte do checkpoint durável, os ficheiros de checkpoint da fonte 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.

Permissions

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

Permissões para SQL Server 2022 e posterior

Requer VIEWDATABASE permissão de ESTADO DE DESEMPENHO na base 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;