sys.dm_db_xtp_checkpoint_files (Transact-SQL)

S’applique à : SQL ServerAzure SQL Database Azure SQL Managed Instance

Affiche des informations sur les fichiers de point de contrôle OLTP en mémoire, notamment la taille de fichier, l’emplacement physique et l’ID de transaction.

Remarque

Pour le point de contrôle actuel qui n’a pas fermé, la colonne d’état de sys.dm_db_xtp_checkpoint_files sera UNDER CONSTRUCTION pour les nouveaux fichiers. Un point de contrôle se ferme automatiquement lorsqu’il y a suffisamment de croissance du journal des transactions depuis le dernier point de contrôle, ou si vous émettez la CHECKPOINT commande. Pour plus d'informations, voir CHECKPOINT (Transact-SQL).

Un groupe de fichiers à mémoire optimisée utilise en interne des fichiers append-only pour stocker les lignes insérées et supprimées pour les tables en mémoire. Il existe deux types de fichiers : Un fichier de données contient des lignes insérées tandis qu’un fichier delta contient des références aux lignes supprimées.

SQL Server 2014 (12.x) est sensiblement différent des versions les plus récentes et est abordé dans SQL Server 2014.

Pour plus d’informations, consultez Création et gestion du stockage pour les objets à mémoire optimisée.

SQL Server 2016 (13.x) et versions ultérieures

Le tableau suivant décrit les colonnes pour sys.dm_db_xtp_checkpoint_files, à partir de SQL Server 2016 (13.x) .

Nom de la colonne Type Description
container_id int ID du conteneur (représenté sous la forme d’un fichier avec le type FILESTREAM dans sys.database_files) dont le fichier de données ou delta fait partie. Jointure dans file_id sys.database_files (Transact-SQL).
container_guid uniqueidentifier GUID du conteneur dont fait partie le fichier racine, de données ou delta. Jointure file_guid dans la sys.database_files table.
checkpoint_file_id uniqueidentifier GUID du fichier de point de contrôle.
relative_file_path nvarchar (256) Chemin d’accès du fichier par rapport au conteneur auquel il est mappé.
file_type smallint -1 gratuitement

0 pour le fichier DATA.

1 pour le fichier DELTA.

2 pour le fichier ROOT

3 pour le fichier LARGE DATA
file_type_desc nvarchar(60) FREE - Tous les fichiers conservés en tant que FREE sont disponibles pour l’allocation. Les fichiers gratuits peuvent varier en fonction des besoins prévus par le système. La taille maximale est de 1 Go.

DATA - Les fichiers de données contiennent des lignes qui ont été insérées dans des tables mémoire optimisées.

DELTA : les fichiers delta contiennent des références à des lignes dans des fichiers de données qui ont été supprimés.

ROOT - Les fichiers racines contiennent des métadonnées système pour les objets optimisés en mémoire et compilés en mode natif.

LARGE DATA : les fichiers de données volumineux contiennent des valeurs insérées dans (n)varchar(max) et varbinary(max), ainsi que les segments de colonne qui font partie des index columnstore sur des tables mémoire optimisées.
internal_storage_slot int Index du fichier dans le tableau de stockage interne. NULL pour ROOT ou pour l’état autre que 1.
checkpoint_pair_file_id uniqueidentifier Fichier DATA ou DELTA correspondant. NULL pour ROOT.
file_size_in_bytes bigint Taille du fichier sur le disque.
file_size_used_in_bytes bigint Pour les paires de fichiers de point de contrôle dont le remplissage est toujours en cours, cette colonne est mise à jour après le point de contrôle suivant.
logical_row_count bigint Pour les données, nombre de lignes insérées.

Pour Delta, nombre de lignes supprimées après avoir comptabilisé la table de suppression.

Pour Root, NULL.
state smallint 0 - PRÉCRÉÉ

1 - SOUS CONSTRUCTION

2 - ACTIVE

3 - CIBLE DE FUSION

8 - ATTENTE DE TRONCATION DU JOURNAL
state_desc nvarchar(60) PRÉCRÉÉ : un certain nombre de fichiers de point de contrôle sont préalloués pour réduire ou éliminer les attentes d’allocation de nouveaux fichiers à mesure que les transactions sont exécutées. Ces fichiers peuvent varier en taille et sont créés en fonction des besoins estimés de la charge de travail. Ils ne contiennent aucune donnée. Il s’agit d’une surcharge de stockage dans les bases de données avec un groupe de fichiers MEMORY_OPTIMIZED_DATA.

UNDER CONSTRUCTION - Ces fichiers de point de contrôle sont en cours de construction, ce qui signifie qu’ils sont remplis en fonction des enregistrements de journal générés par la base de données et ne font pas encore partie d’un point de contrôle.

ACTIVE : elles contiennent les lignes insérées/supprimées des points de contrôle fermés précédents. Ils contiennent le contenu des tables lues en mémoire avant d’appliquer la partie active du journal des transactions au redémarrage de la base de données. Nous nous attendons à ce que la taille de ces fichiers de point de contrôle soit d’environ 2x de la taille en mémoire des tables optimisées en mémoire, en supposant que l’opération de fusion tient compte de la charge de travail transactionnelle.

MERGE TARGET - Cible des opérations de fusion : ces fichiers de point de contrôle stockent les lignes de données consolidées des fichiers sources identifiés par la stratégie de fusion. Une fois que la fusion est installée, l'état MERGE TARGET passe à ACTIVE.

EN ATTENTE DE LA TRONCATION DU JOURNAL : une fois la fusion installée et que merge TARGET CFP fait partie du point de contrôle durable, les fichiers de point de contrôle source de fusion passent à cet état. Les fichiers de cet état sont nécessaires pour l’exactitude opérationnelle de la base de données avec une table optimisée en mémoire. Par exemple, pour la récupération à partir d'un point de contrôle durable afin de remonter dans le temps.
lower_bound_tsn bigint Limite inférieure de la transaction dans le fichier ; NULL si l’état n’est pas dans (1, 3).
upper_bound_tsn bigint Limite supérieure de la transaction dans le fichier ; NULL si l’état n’est pas dans (1, 3).
begin_checkpoint_id bigint ID du point de contrôle de début.
end_checkpoint_id bigint ID du point de contrôle de fin.
last_updated_checkpoint_id bigint ID du dernier point de contrôle qui a mis à jour ce fichier.
encryption_status smallint 0, 1, 2
encryption_status_desc nvarchar(60) 0 => UNENCRYPTED

1 => CHIFFRÉ AVEC LA CLÉ 1

2 => CHIFFRÉ AVEC LA CLÉ 2. Valide uniquement pour les fichiers actifs.

SQL Server 2014 (12.x)

Le tableau suivant décrit les colonnes pour sys.dm_db_xtp_checkpoint_files, pour SQL Server 2014 (12.x).

Nom de la colonne Type Description
container_id int ID du conteneur (représenté sous la forme d’un fichier avec le type FILESTREAM dans sys.database_files) dont le fichier de données ou delta fait partie. Jointure dans file_id sys.database_files (Transact-SQL).
container_guid uniqueidentifier GUID du conteneur dont les données ou le fichier delta font partie.
checkpoint_file_id GUID ID du fichier de données ou delta.
relative_file_path nvarchar (256) Chemin d'accès au fichier de données ou delta, relatif à l'emplacement du conteneur.
file_type tinyint 0 pour le fichier de données.

1 pour le fichier delta.

NULL si la colonne d’état est définie sur 7.
file_type_desc nvarchar(60) Type de fichier : DATA_FILE, DELTA_FILE ou NULL si la colonne d’état est définie sur 7.
internal_storage_slot int Index du fichier dans le tableau de stockage interne. NULL si la colonne d’état n’est pas 2 ou 3.
checkpoint_pair_file_id uniqueidentifier Fichier de données ou delta correspondant.
file_size_in_bytes bigint Taille du fichier utilisée. NULL si la colonne d’état est définie sur 5, 6 ou 7.
file_size_used_in_bytes bigint Taille utilisée du fichier. NULL si la colonne d’état est définie sur 5, 6 ou 7.

Pour les paires de fichiers de point de contrôle dont le remplissage est toujours en cours, cette colonne est mise à jour après le point de contrôle suivant.
inserted_row_count bigint Nombre de lignes dans le fichier de données.
deleted_row_count bigint Nombre de lignes supprimées dans le fichier delta.
drop_table_deleted_row_count bigint Nombre de lignes dans les fichiers de données affectées par une table de suppression. S'applique aux fichiers de données lorsque la colonne d'état est égale à 1.

Affiche les lignes supprimées des tables supprimées. Les statistiques drop_table_deleted_row_count sont compilées après que l'opération de garbage collection pour libérer la mémoire des lignes des tables supprimées est terminée et un point de contrôle est effectué. Si vous redémarrez SQL Server avant que les statistiques de suppression des tables ne soient reflétées dans cette colonne, les statistiques seront mises à jour dans le cadre de la récupération. Le processus de récupération ne charge pas de lignes des tables supprimées. Les statistiques des tables supprimées sont compilées pendant la phase de chargement et reportées dans cette colonne lorsque la récupération est terminée.
state int 0 - PRÉCRÉÉ

1 - SOUS CONSTRUCTION

2 - ACTIVE

3 - CIBLE DE FUSION

4 - SOURCE FUSIONNÉE

5 - REQUIS POUR LA SAUVEGARDE/HAUTE DISPONIBILITÉ

6 - TRANSITION VERS TOMBSTONE

7 - TOMBSTONE
state_desc nvarchar(60) PRECREATED - Un petit ensemble de paires de données et de fichiers delta, également appelés paires de fichiers de point de contrôle (CFPS) sont conservés préalloués pour réduire ou éliminer les attentes d’allocation de nouveaux fichiers à mesure que les transactions sont exécutées. Ils sont créés avec une taille de fichier de données de 128 Mo et une taille de fichier delta de 8 Mo, mais ne contiennent aucune donnée. Le nombre de paires de fichiers de point de contrôle est calculé en fonction du nombre de processeurs logiques ou de planificateurs (un par cœur, sans limitation) avec un minimum de 8. Il s'agit d'une charge de stockage fixe dans les bases de données avec des tables mémoire optimisées.

UNDER CONSTRUCTION - Ensemble de fournisseurs de services de contrôle qui stockent les lignes de données nouvellement insérées et éventuellement supprimées depuis le dernier point de contrôle.

ACTIVE - Contient les lignes insérées et les lignes supprimées provenant des points de contrôle fermés précédents. Ces paires contiennent toutes les lignes insérées et supprimées requises avant d'appliquer la partie actuelle du journal des transactions au redémarrage de la base de données. La taille de ces cfPs sera environ deux fois supérieure à la taille en mémoire des tables mémoire optimisées, en supposant que l’opération de fusion est en cours avec la charge de travail transactionnelle.

MERGE TARGET - Le CFP stocke les lignes de données consolidées des PCP identifiées par la stratégie de fusion. Une fois que la fusion est installée, l'état MERGE TARGET passe à ACTIVE.

SOURCE FUSIONNÉE : une fois l’opération de fusion installée, les fournisseurs de services de configuration source sont marqués comme source fusionnée. Notez que l’évaluateur de stratégie de fusion peut identifier plusieurs fusions, mais un CFP ne peut participer qu’à une seule opération de fusion.

OBLIGATOIRE POUR LA SAUVEGARDE/haute disponibilité : une fois la fusion installée et que la fusion CIBLE CFP fait partie d’un point de contrôle durable, les fournisseurs de services de fusion sources passent à cet état. Des paires de fichiers de point de contrôle ayant cet état sont nécessaires pour le bon fonctionnement de la base de données contenant la table mémoire optimisée. Par exemple, pour la récupération à partir d'un point de contrôle durable afin de remonter dans le temps. Une paire de fichiers de point de contrôle peut être marquée pour l'opération de garbage collection une fois que le point de troncation de journal dépasse sa plage de transactions.

IN TRANSITION TO TOMBSTONE - Ces CFPs ne sont pas nécessaires par le moteur OLTP en mémoire et peuvent être récupérés par le garbage collection. Cet état indique que ces paires de fichiers de point de contrôle attendent que le thread d'arrière-plan les passe à l'état suivant, qui est TOMBSTONE.

TOMBSTONE - Ces cfPs attendent d’être récupérés par le garbage collector filestream. (sp_filestream_force_garbage_collection (Transact-SQL))
lower_bound_tsn bigint Limite inférieure des transactions contenues dans le fichier. NULL si la colonne d’état est autre que 2, 3 ou 4.
upper_bound_tsn bigint Limite supérieure des transactions contenues dans le fichier. NULL si la colonne d’état est autre que 2, 3 ou 4.
last_backup_page_count int Nombre de pages logiques déterminé lors de la dernière sauvegarde. S'applique quand la colonne d'état a la valeur 2, 3, 4 ou 5. NULL si le nombre de pages n’est pas connu.
delta_watermark_tsn int Transaction du dernier point de contrôle qui a écrit dans ce fichier delta. Il s'agit de la filigrane du fichier delta.
last_checkpoint_recovery_lsn nvarchar(23) Numéro séquentiel dans le journal de récupération du dernier point de contrôle qui requiert toujours le fichier.
tombstone_operation_lsn nvarchar(23) Le fichier sera supprimé une fois que le tombstone_operation_lsn passe derrière le numéro séquentiel de troncation du journal.
logical_deletion_log_block_id bigint S'applique uniquement à l'état 5.

autorisations

Requiert l'autorisation VIEW DATABASE STATE sur la base de données.

Autorisations pour SQL Server 2022 (et versions plus récentes)

Nécessite l’autorisation VIEW DATABASE PERFORMANCE STATE sur la base de données.

Cas d'utilisation

Vous pouvez estimer le stockage total utilisé par OLTP en mémoire comme suit :

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

Pour afficher la répartition de l’utilisation du stockage par état et par type de fichier, exécutez la requête suivante :

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;