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;
Contenu connexe
- Introduction aux tables optimisées en mémoire
- Vues de gestion dynamique de table optimisées en mémoire
- Vue d’ensemble et scénarios d’utilisation OLTP en mémoire
- Optimiser les performances à l’aide de technologies en mémoire dans Azure SQL Database
- Optimiser les performances à l’aide de technologies en mémoire dans Azure SQL Managed Instance