Compartilhar via


sys.dm_db_xtp_checkpoint_files (Transact-SQL)

Exibe informações sobre os arquivos de ponto de verificação, incluindo o tamanho do arquivo, o local físico e a ID da transação.

Dica

Para o ponto de verificação atual que não foi fechado, a coluna de estado de sys.dm_db_xtp_checkpoint_files estará EM CONSTRUÇÃO para novos arquivos.Um ponto de verificação é fechado automaticamente quando o log de transações aumenta 512MB desde o último ponto de verificação ou se você emitir o comando CHECKPOINT (CHECKPOINT (Transact-SQL)).

Um grupo de arquivos com otimização de memória usa internamente arquivos de filestream para armazenar as linhas inseridas e excluídas de tabelas na memória. Existem dois tipos de arquivos. Um arquivo de dados contém linhas inseridas, enquanto um arquivo delta contém linhas excluídas. Cada arquivo de dados é pré-alocado para um tamanho de 128 MB, mas ele poderá ficar maior se houver uma transação de longa execução ou quando uma mesclagem manual forçar o arquivo de destino resultante para ser maior que 128 MB.

Para obter mais informações, consulte Criando e gerenciando armazenamento para objetos com otimização de memória.

Aplica-se a: SQL Server (do SQL Server 2014 à versão atual).

Nome da coluna

Tipo

Descrição

container_id

int

A ID do contêiner (representado como um arquivo com o tipo FILESTREAM em sys.database_files) da qual fazem parte os dados ou o arquivo delta. Junções com file_id em sys.database_files (Transact-SQL).

container_guid

uniqueidentifier

O GUID do contêiner do qual fazem parte os dados ou o arquivo delta.

checkpoint_file_id

GUID

ID dos dados ou arquivo delta.

relative_file_path

nvarchar(256)

Caminho para os dados ou arquivo delta, relativo ao local do contêiner.

file_type

tinyint

0 para arquivo de dados.

1 para arquivo delta.

NULL se a coluna de estado estiver definida como 6.

file_type_desc

nvarchar(60)

O tipo de arquivo: DATA_FILE, DELTA_FILE, ou NULL se a coluna de estado for definida como 6.

internal_storage_slot

int

O índice do arquivo na matriz de armazenamento interna. NULL se a coluna de estado estiver definida como 2 ou 3.

NULL se um par de arquivos de ponto de verificação tem o estado 1 -- UNDER CONSTRUCTION.

checkpoint_pair_file_id

uniqueidentifier

Os dados ou arquivo delta correspondentes.

file_size_in_bytes

bigint

Tamanho do arquivo usado. NULL se a coluna de estado estiver definida como 4, 5 ou 6.

file_size_used_in_bytes

bigint

Tamanho utilizado do arquivo que está sendo usado NULL se a coluna de estado estiver definida como 4, 5 ou 6.

Para os pares de arquivos de ponto de verificação que ainda estão sendo populados, essa coluna será atualizada após o próximo ponto de verificação.

inserted_row_count

bigint

Número de linhas no arquivo de dados.

deleted_row_count

bigint

Número de linhas excluídas no arquivo delta.

drop_table_deleted_row_count

bigint

O número de linhas nos arquivos de dados afetados por uma tabela. Aplica-se aos arquivos de dados quando o estado da coluna for igual a 1.

Mostra as contagens de linhas excluídas das tabelas removidas. As estatísticas drop_table_deleted_row_count são compiladas depois que a coleta de lixo de memória das linhas nas tabelas removidas é concluída e um ponto de verificação é realizado. Se você reiniciar o SQL Server antes que as estatísticas de tabelas removidas apareçam nessa coluna, as estatísticas serão atualizadas como parte da recuperação. O processo de recuperação não carrega linhas das tabelas removidas. As estatísticas das tabelas removidas são compiladas durante a fase de carregamento e relatadas nessa coluna quando a recuperação é concluída.

state

int

0 – PRÉ-CRIADO

1 – EM CONSTRUÇÃO

2 - ATIVO

3 – MESCLAR DESTINO

4 – ORIGEM MESCLADA

5 – NECESSÁRIO PARA BACKUP/AD

6 – EM TRANSIÇÃO PARA MARCA DE EXCLUSÃO

7 – MARCA DE EXCLUSÃO

state_desc

nvarchar(60)

  • PRÉ-CRIADO – Um conjunto pequeno de pares de arquivos delta, também conhecido como pares (CFPs) de arquivos de ponto de verificação, é mantido pré-atribuído para minimizar ou eliminar todas as esperas para atribuir novos arquivos enquanto as transações estão sendo executadas. Eles são totalmente utilizados com um tamanho de arquivo de dados de 128 MB e tamanho de arquivo 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 de agendadores (um por núcleo, sem número máximo) com um mínimo de 8. Essa é uma sobrecarga de armazenamento fixa em bancos de dados com tabelas com otimização de memória.

  • EM CONSTRUÇÃO – Conjunto de CFPs que armazenam linhas de dados recentemente inseridas e possivelmente excluídas desde o último ponto de verificação.

  • ATIVO - Esses contêm as linhas inseridas e excluídas dos pontos de verificação fechados anteriores. Esses CFPs contêm todas as linhas inseridas e excluídas necessárias antes da aplicação da parte ativa do log de transações na reinicialização do banco de dados. O tamanho dessas CFPs será aproximadamente 2 vezes o tamanho das tabelas com otimização de memória na memória, supondo que a operação de mesclagem esteja atualmente com a carga de trabalho transacional.

  • MESCLAR DESTINO – O CFP armazena as linhas de dados consolidadas dos CFPs que foram identificados pela política de mesclagem. Assim que a mesclagem for instalada, a opção MESCLAR DESTINO entrará no estado ATIVO.

  • ORIGEM MESCLADA – Assim que a operação de mesclagem for instalada, os CFPs de origem serão marcados como ORIGEM MESCLADA. Observe que, o avaliador de política de mesclagem pode identificar várias mesclagens, mas um CFP só pode participar de uma operação de mesclagem.

  • NECESSÁRIO PARA BACKUP/AD – Assim que a mesclagem for instalada e o CFP MESCLAR DESTINO fizer parte do ponto de verificação durável, os CFPs de origem de mesclagem entram nesse estado. Os CFPs nesse estado são necessários para exatidão operacional do banco de dados da tabela com otimização de memória. Por exemplo, restaurar de um ponto de verificação durável para voltar no tempo. Um CFP pode ser marcado para coleta de lixo depois que o ponto de truncamento do log passar de seu intervalo de transações.

  • EM TRANSIÇÃO PARA MARCA DE EXCLUSÃO – Esses CFPs não são necessários pelo mecanismo de OLTP em memória e podem ser coletados como lixo. Esse estado indica que esses CFPs estão aguardando o thread em segundo plano para fazer a transição deles para o próximo estado, que é MARCA DE EXCLUSÃO.

  • MARCA DE EXCLUSÃO – Esses CFPs estão esperando para serem coletados como lixo pelo coletor de lixo do fluxo de arquivos. (sp_filestream_force_garbage_collection (Transact-SQL))

lower_bound_tsn

bigint

O limite inferior de transações contidas no arquivo. Nulo se a coluna de estado for diferente de 1.

upper_bound_tsn

bigint

O limite superior de transações contidas no arquivo. Nulo se a coluna de estado for diferente de 1.

last_backup_page_count

int

Contagem de página lógica que é determinada no último backup. Se aplica quando a coluna de estado estiver definida como 0, 1 ou 2. NULL se a contagem de páginas não for conhecida.

delta_watermark_tsn

int

A transação do último ponto de verificação que gravou neste arquivo delta. Essa é a marca d'água do arquivo delta.

last_checkpoint_recovery_lsn

nvarchar(23)

Número de sequência do log de recuperação do último ponto de verificação que ainda precisa do arquivo.

tombstone_operation_lsn

nvarchar(23)

O arquivo será excluído uma vez que tombstone_operation_lsn ir para trás do número de sequência de log de truncamento do registro.

logical_deletion_log_block_id

bigint

Nulo, a menos que a coluna de estado seja 6.

Permissões

Requer a permissão VIEW DATABASE STATE no servidor.

Casos de uso

Você pode estimar o armazenamento usado por tabelas na memória da seguinte maneira:

-- total storage used by in-memory tables
select sum (file_size_in_bytes)/(1024*1024) as file_size_in_MB
   from sys.dm_db_xtp_checkpoint_files 
   where internal_storage_slot is not NULL

Você pode estimar o espaço livre em cada arquivo com a seguinte consulta.

Observe a coluna percent_full. O OLTP na memória usa um heurístico para identificar a última transação do arquivo de dados. Dependendo do número de linhas alteradas pela transação, a porcentagem completa pode variar. O espaço preenchido de um arquivo de dados também poderá ser afetado se um ponto de verificação tiver ocasionado o fechamento desse arquivo. Você também pode consultar um arquivo de dados sem linhas. Isso pode ser ocasionado por um ponto de verificação manual após a exclusão das linhas e antes da adição das linhas.

select *,
str((convert 
(float, (file_size_used_in_bytes * (1 - convert (float, deleted_rows)/inserted_rows)))/file_size_in_bytes),
25, 2) as percent_full
from
( 
  select t.internal_storage_slot, file_size_in_bytes, file_size_used_in_bytes, 
  (case when inserted_row_count= 0 then 1
         when inserted_row_count > 0 then inserted_row_count end) as inserted_rows,
(select deleted_row_count 
 from sys.dm_db_xtp_checkpoint_files 
 where internal_storage_slot = t.internal_storage_slot and file_type=1) as deleted_rows
from sys.dm_db_xtp_checkpoint_files as t
where internal_storage_slot is not NULL and file_type=0) as t_t
order by internal_storage_slot

SQL Server permite até 8.192 pares de arquivos delta e de dados. Para ver o número de pares de arquivos delta e de dados ativos, use a seguinte consulta.

-- total number of data and delta file pairs
select count (*)
from sys.dm_db_xtp_checkpoint_files
where internal_storage_slot is not NULL and file_type = 0

Para estimar a porcentagem de armazenamento total usada:

declare @deleted_row_count int; 
declare @inserted_row_count int;
declare @effective_row_percentage float

-- get the total deleted row counts by looking at active delta files
select @deleted_row_count = SUM (deleted_row_count)
from sys.dm_db_xtp_checkpoint_files 
where state = 2 and file_type = 1

-- get total inserted row count by looking at active data files
select @inserted_row_count = SUM (inserted_row_count)
from sys.dm_db_xtp_checkpoint_files 
where state = 2 and file_type = 0

-- get the effective % of active rows after accounting for the deleted rows
-- This number represents the potential space that can be freed up if deleted are removed from storage
select @effective_row_percentage =  (1 - convert (float, @deleted_row_count)/@inserted_row_count)

-- Compute the effective usage fill factor for the storage. 
-- Effective fill factor computes the effective free space in data files
-- on average after accounting for the deleted rows 
-- This should be >= 50% otherwise it is an indication that auto-merge is not keeping up
select 
str (convert (varchar(100), ((SUM (file_size_used_in_bytes)*@effective_row_percentage)/SUM (file_size_in_bytes)) *100 ),5, 2)
as [storage usage fill factor]
from sys.dm_db_xtp_checkpoint_files
where state = 2 and file_type = 0

Consulte também

Conceitos

Exibições de gerenciamento dinâmico da tabela com otimização de memória (Transact-SQL)