Partage via


sys.dm_db_file_space_usage (Transact-SQL)

S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

Retourne les informations d’utilisation de l’espace pour chaque fichier de données de la base de données.

Remarque

Pour appeler cela à partir d’Azure Synapse Analytics ou du système de plateforme Analytics (PDW), utilisez le nom sys.dm_pdw_nodes_db_file_space_usage. Cette syntaxe n’est pas prise en charge par le pool SQL serverless dans Azure Synapse Analytics.

Nom de la colonne Type de données Description
database_id smallint ID de la base de données.

Dans Azure SQL Database, les valeurs sont uniques au sein d’une base de données unique ou d’un pool élastique, mais pas dans un serveur logique.
file_id smallint ID de fichier.

file_idest mappé à file_id sys.dm_io_virtual_file_stats et à fileid dans sys.sysfiles.
filegroup_id smallint S’applique à : SQL Server 2012 (11.x) et versions ultérieures.

ID de groupe de fichiers.
total_page_count bigint S’applique à : SQL Server 2012 (11.x) et versions ultérieures.

Nombre total de pages dans le fichier de données.
allocated_extent_page_count bigint S’applique à : SQL Server 2012 (11.x) et versions ultérieures.

Nombre total de pages dans les étendues allouées dans le fichier de données.
unallocated_extent_page_count bigint Nombre total de pages dans les étendues non allouées dans le fichier de données.

Les pages inutilisées dans les étendues allouées ne sont pas incluses.
version_store_reserved_page_count bigint Nombre total de pages dans les étendues uniformes allouées pour le magasin de versions. Les pages du magasin de versions ne sont jamais allouées à partir d'étendues mixtes.

Les pages IAM ne sont pas incluses, car elles sont toujours allouées à partir d’étendues mixtes. Les pages PFS sont incluses si elles sont allouées à partir d'une étendue uniforme.

Pour plus d'informations, consultez sys.dm_tran_version_store (Transact-SQL).
user_object_reserved_page_count bigint Nombre total de pages allouées à partir d'étendues uniformes pour les objets utilisateur de la base de données. Ce nombre inclut les pages non utilisées provenant d'une étendue allouée.

Les pages IAM ne sont pas incluses, car elles sont toujours allouées à partir d’étendues mixtes. Les pages PFS sont incluses si elles sont allouées à partir d'une étendue uniforme.

Vous pouvez utiliser la total_pages colonne dans l’affichage catalogue sys.allocation_units pour retourner le nombre de pages réservées de chaque unité d’allocation dans l’objet utilisateur. Toutefois, la total_pages colonne inclut des pages IAM.
internal_object_reserved_page_count bigint Nombre total de pages d'étendues uniformes allouées pour des objets internes dans le fichier. Ce nombre inclut les pages non utilisées provenant d'une étendue allouée.

Les pages IAM ne sont pas incluses, car elles sont toujours allouées à partir d’étendues mixtes. Les pages PFS sont incluses si elles sont allouées à partir d'une étendue uniforme.

Il n'existe pas d'affichage catalogue ni d'objet de gestion dynamique qui retourne le nombre de pages de chaque objet interne.
mixed_extent_page_count bigint Nombre total de pages allouées et non allouées dans les étendues mixtes allouées du fichier. Les étendues mixtes contiennent des pages allouées à différents objets. Ce nombre comprend toutes les pages IAM du fichier.
modified_extent_page_count bigint S’applique à : SQL Server 2016 (13.x) SP2 et versions ultérieures.

Nombre total de pages modifiées dans les étendues allouées du fichier depuis la dernière sauvegarde complète de la base de données. Le nombre de pages modifiés peut être utilisé pour suivre le nombre de modifications différentielles dans la base de données depuis la dernière sauvegarde complète, pour décider si une sauvegarde différentielle est nécessaire.
pdw_node_id int S’applique à : Azure Synapse Analytics, Analytics Platform System (PDW)

Identificateur du nœud sur lequel cette distribution est activée.
distribution_id int S’applique à : Azure Synapse Analytics, Analytics Platform System (PDW)

ID numérique unique associé à la distribution.

Notes

Le nombre de pages se situe toujours au niveau des étendues. Par conséquent, les valeurs de nombre de pages sont toujours un multiple de huit. Les étendues qui contiennent des pages d'allocation GAM (Global Allocation Map) et SGAM (Shared Global Allocation Map) sont des étendues uniformes allouées. Elles ne sont pas incluses dans le nombre de pages décrites précédemment. Pour plus d’informations sur les pages et les étendues, consultez Guide d’architecture des pages et des étendues.

Le contenu du magasin de versions actuel se trouve dans sys.dm_tran_version_store. Le suivi des pages du magasin de versions n'est pas effectué au niveau des sessions et des tâches, mais au niveau des fichiers. En effet, il s'agit de ressources globales. Une session peut générer des versions, mais les versions ne peuvent pas être supprimées lorsque la session se termine. Le nettoyage du magasin de versions doit considérer la transaction la plus longue ayant besoin d'accéder à une version particulière. La transaction la plus longue en cours d’exécution liée au nettoyage du magasin de versions peut être découverte en consultant la colonne elapsed_time_seconds dans sys.dm_tran_active_snapshot_database_transactions.

Les modifications fréquentes dans la mixed_extent_page_count colonne peuvent indiquer une utilisation intensive des pages SGAM. Le cas échéant, vous risquez d'observer un grand nombre d'attentes PAGELATCH_UP dans lesquelles la ressource d'attente est une page SGAM. Pour plus d’informations, consultez sys.dm_os_waiting_tasks (Transact-SQL), sys.dm_os_wait_stats (Transact-SQL) et sys.dm_os_latch_stats (Transact-SQL).

Objets utilisateur

Les objets suivants sont compris dans les compteurs de pages des objets utilisateurs :

  • les tables et les index définis par l'utilisateur ;
  • les tables et les index système ;
  • les tables temporaires globales et les index ;
  • les tables temporaires locales et les index ;
  • Variables de table
  • les tables renvoyées dans les fonctions table.

Objets internes

Les objets internes sont uniquement dans tempdb. Les objets suivants sont compris dans les compteurs de pages des objets internes :

  • les tables de travail des opérations de curseur ou de mise en attente et le stockage temporaire d'objets LOB ;
  • les fichiers de travail des opérations telles que les jointures de hachage ;
  • Tris

Cardinalités de la relation

Du À Relationship
sys.dm_db_file_space_usage.database_id, file_id sys.dm_io_virtual_file_stats.database_id, file_id Un-à-un

autorisations

Sur SQL Server 2019 (15.x) et les versions antérieures, et SQL Managed Instance, nécessite VIEW SERVER STATE une autorisation.

Sur SQL Server 2022 (16.x) et versions ultérieures, nécessite l’autorisation VIEW SERVER PERFORMANCE STATE sur le serveur.

Sur les objectifs de service SQL Database Basic, S0 et S1, et pour les bases de données dans des pools élastiques, le compte d’administrateur du serveur, le compte d’administrateur Microsoft Entra ou l’appartenance au ##MS_ServerStateReader## rôle serveur est requis. Sur tous les autres objectifs de service SQL Database, l’autorisation VIEW DATABASE STATE sur la base de données ou l’appartenance au rôle serveur ##MS_ServerStateReader## est requise.

Exemples

Déterminer la quantité d’espace libre dans tempdb

La requête suivante retourne le nombre total de pages libres et l’espace libre total en mégaoctets (Mo) disponibles dans tous les fichiers de données dans tempdb.

USE tempdb;
GO

SELECT
    SUM(unallocated_extent_page_count) AS [free pages],
    (SUM(unallocated_extent_page_count) * 1.0 / 128) AS [free space in MB]
FROM sys.dm_db_file_space_usage;

Déterminer la quantité d’espace utilisé par les objets utilisateur

La requête suivante retourne le nombre total de pages utilisées par les objets utilisateur et l’espace total utilisé par les objets utilisateur dans tempdb.

USE tempdb;
GO

SELECT
    SUM(user_object_reserved_page_count) AS [user object pages used],
    (SUM(user_object_reserved_page_count) * 1.0 / 128) AS [user object space in MB]
FROM sys.dm_db_file_space_usage;

Voir aussi