Compartir a través de


sys.dm_db_xtp_checkpoint_files (Transact-SQL)

Muestra información sobre los archivos de puntos de comprobación, incluidos el tamaño de archivo, la ubicación física y el identificador de transacción.

Nota

Para el punto de comprobación actual que no se ha cerrado, la columna de estado de sys.dm_db_xtp_checkpoint_files contendrá UNDER CONSTRUCTION para los nuevos archivos.Un punto de comprobación se cierra automáticamente cuando el registro de transacciones aumenta 512 MB desde el último punto de comprobación o si emite el comando CHECKPOINT (CHECKPOINT (Transact-SQL)).

Un grupo de archivos con optimización para memoria utiliza internamente archivos FILESTREAM para almacenar las filas insertadas y las eliminadas para las tablas en memoria. Hay dos tipos de archivos: Un archivo de datos contiene las filas insertadas mientras que un archivo delta contiene las filas eliminadas. Cada archivo de datos se reserva un tamaño de 128 MB pero puede ser mayor si hay una transacción de larga duración o cuando una mezcla manual obliga a que el archivo de destino resultante sea mayor de 128 MB.

Para obtener más información, vea Crear y administrar el almacenamiento de objetos con optimización para memoria.

Se aplica a: SQL Server (desde SQL Server 2014 hasta la versión actual).

Nombre de columna

Tipo

Descripción

container_id

int

Identificador del contenedor (representado como un archivo de tipo FILESTREAM en sys.database_files) del que forma parte el archivo de datos o delta. Combinaciones con file_id en sys.database_files (Transact-SQL).

container_guid

uniqueidentifier

GUID del contenedor del que forma parte el archivo de datos o delta.

checkpoint_file_id

GUID

Identificador del archivo de datos o delta.

relative_file_path

nvarchar(256)

Ruta de acceso al archivo de datos o delta, con respecto a la ubicación del contenedor.

file_type

tinyint

0 para el archivo de datos.

1 para el archivo delta.

Es NULL si la columna state está establecida en 6.

file_type_desc

nvarchar(60)

Tipo de archivo: DATA_FILE, DELTA_FILE o NULL si la columna state está establecida en 6.

internal_storage_slot

int

El índice del archivo en la matriz de almacenamiento interno. Es NULL si la columna state está establecida en 2 o 3.

Es NULL si un par de archivos de punto de comprobación tiene el estado 1 -- UNDER CONSTRUCTION.

checkpoint_pair_file_id

uniqueidentifier

Archivo de datos o delta correspondiente.

file_size_in_bytes

bigint

Tamaño del archivo que se usa. Es NULL si la columna state está establecida en 4, 5 o 6.

file_size_used_in_bytes

bigint

Tamaño usado del archivo que se emplea. Es NULL si la columna state está establecida en 4, 5 o 6.

Para los pares de archivos de punto de comprobación que todavía se están llenando, esta columna se actualizará después del punto de comprobación siguiente.

inserted_row_count

bigint

Número de filas del archivo de datos.

deleted_row_count

bigint

Número de filas eliminadas del archivo delta.

drop_table_deleted_row_count

bigint

Número de filas de los archivos de datos afectados por una operación de quitar tabla. Se aplica a los archivos de datos cuando la columna state es igual a 1.

Muestra los números de filas eliminadas de las tablas quitadas. Las estadísticas drop_table_deleted_row_count se compilan una vez que se completa la recolección de elementos no utilizados de memoria de las filas de las tablas quitadas y cuando se toma un punto de comprobación. Si reinicia SQL Server antes de que las estadísticas de tablas quitadas se reflejen en esta columna, se actualizarán las estadísticas como parte de la recuperación. El proceso de recuperación no carga filas de tablas quitadas. Las estadísticas de tablas quitadas se compilan durante la fase de carga y se muestran en esta columna cuando se completa la recuperación.

state

int

0 – PRECREATED

1 – UNDER CONSTRUCTION

2 - ACTIVE

3 – MERGE TARGET

4 – MERGED SOURCE

5 – REQUIRED FOR BACKUP/HA

6 – IN TRANSITION TO TOMBSTONE

7 – TOMBSTONE

state_desc

nvarchar(60)

  • PRECREATED: se mantiene preasignado un pequeño conjunto de pares de archivos de datos y delta, también conocidos como pares de archivos de punto de comprobación (CFP), para minimizar o eliminar cualquier espera para asignar nuevos archivos mientras se ejecutan las transacciones. Son de tamaño completo con un tamaño de archivo de datos de 128 MB y un tamaño de archivo delta de 8 MB pero no contienen ningún dato. El número de CFP se calcula como el número de procesadores o programadores lógicos (uno por núcleo, sin valor máximo) con un mínimo de 8. Se trata de una sobrecarga de almacenamiento fija en bases de datos con tablas con optimización para memoria.

  • UNDER CONSTRUCTION: conjunto de CFP que almacenan las filas de datos recién insertadas y posiblemente eliminadas desde el último punto de comprobación.

  • ACTIVE: contienen las filas insertadas y eliminadas de puntos de comprobación cerrados anteriores. Estos CFP contienen todas las filas insertadas y eliminadas necesarias antes de aplicar la parte activa del registro de transacciones en el reinicio de la base de datos. El tamaño de estos CFP será aproximadamente el doble del tamaño en memoria de las tablas con optimización para memoria, siempre y cuando la operación de combinación esté actualizada con la carga de trabajo transaccional.

  • TARGET MERGE: el CFP almacena las filas de datos consolidadas de los CFP identificados por la directiva de mezcla. Una vez instalada la mezcla, TARGET MERGE cambia al estado ACTIVE.

  • MERGED SOURCE: una vez instalada la operación de mezcla, los CFP de origen se marcan como MERGED SOURCE. Tenga en cuenta que el evaluador de la directiva de mezcla puede identificar varias mezclas pero un CFP solo puede participar en una operación de mezcla.

  • REQUIRED FOR BACKUP/HA: una vez instalada la mezcla y cuando el CFP con el estado MERGE TARGET forma parte del punto de comprobación durable, los CFP de origen de mezcla cambian a este estado. Los CFP que están en este estado son necesarios para el correcto funcionamiento de la base de datos con tablas con optimización para memoria. Por ejemplo, para recuperarse de un punto de comprobación durable para ir a un momento anterior en el tiempo. Un CFP se puede marcar para la recolección de elementos no utilizados una vez que el punto de truncamiento del registro sobrepasa los límites de su intervalo de transacción.

  • IN TRANSITION TO TOMBSTONE: el motor de OLTP en memoria no necesita estos CFP y se puede hacer su recolección de elementos no utilizados. Este estado indica que estos CFP están esperando que el subproceso de fondo haga la transición al estado siguiente, que es TOMBSTONE.

  • TOMBSTONE: estos CFP están esperando a que el recolector de elementos no utilizados de la secuencia de archivos recolecte sus elementos no utilizados. (sp_filestream_force_garbage_collection (Transact-SQL))

lower_bound_tsn

bigint

El límite inferior de las transacciones contenidas en el archivo. Es NULL si la columna state no tiene el valor 1.

upper_bound_tsn

bigint

El límite superior de las transacciones contenidas en el archivo. Es NULL si la columna state no tiene el valor 1.

last_backup_page_count

int

Recuento de páginas lógicas que se determina en la última copia de seguridad. Se aplica cuando la columna state está establecida en 0, 1 o 2. Es NULL si no se conoce el recuento de páginas.

delta_watermark_tsn

int

Transacción del último punto de comprobación que escribió en este archivo delta. Es el límite para el archivo delta.

last_checkpoint_recovery_lsn

nvarchar(23)

Número de secuencia de registro de recuperación del último punto de comprobación que todavía necesita el archivo.

tombstone_operation_lsn

nvarchar(23)

El archivo se eliminará una vez que tombstone_operation_lsn esté detrás del número de secuencia de registro del truncamiento del registro.

logical_deletion_log_block_id

bigint

Es NULL, a menos que la columna state sea 6.

Permisos

Requiere el permiso VIEW DATABASE STATE en el servidor.

Casos de uso

Puede calcular el almacenamiento utilizado por las tablas en memoria como sigue:

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

Puede calcular el espacio disponible en cada archivo con la consulta siguiente.

Observe la columna percent_full. OLTP en memoria utiliza una heurística para identificar la última transacción del archivo de datos. Según el número de filas modificadas por la transacción, el porcentaje completo puede variar. El espacio rellenado de un archivo de datos también puede verse afectado si se efectuó un punto de comprobación que ocasionara que este archivo se cerrase. También puede ver un archivo de datos sin filas. Esto puede ser ocasionado por punto de comprobación manual después de eliminar las filas y antes de que las filas se agreguen.

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 hasta 8.192 pares de archivos delta y de datos. Para ver el número de pares activos de archivos delta y de datos, use la consulta siguiente.

-- 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 calcular el porcentaje de almacenamiento total utilizado:

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

Vea también

Conceptos

Vistas de administración dinámica de tablas con optimización para memoria (Transact-SQL)