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