sys.dm_db_file_space_usage (Transact-SQL)

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Devuelve información de uso del espacio para cada archivo de datos de la base de datos.

Nota:

Para llamar a esto desde Azure Synapse Analytics o Analytics Platform System (PDW), use el nombre sys.dm_pdw_nodes_db_file_space_usage. El grupo de SQL sin servidor no admite esta sintaxis en Azure Synapse Analytics.

Nombre de la columna Tipo de datos Descripción
database_id smallint Id. de la base de datos.

En Azure SQL Database, los valores son únicos dentro de una base de datos única o un grupo elástico, pero no dentro de un servidor lógico.
file_id smallint Identificador de archivo.

file_id se asigna a file_id en sys.dm_io_virtual_file_stats y a fileid en sys.sysfiles.
filegroup_id smallint Se aplica a: SQL Server 2012 (11.x) y versiones posteriores.

Identificador de grupo de archivos
total_page_count bigint Se aplica a: SQL Server 2012 (11.x) y versiones posteriores.

Número total de páginas en el archivo de datos.
allocated_extent_page_count bigint Se aplica a: SQL Server 2012 (11.x) y versiones posteriores.

Número total de páginas en las extensiones asignadas en el archivo de datos.
unallocated_extent_page_count bigint Número total de páginas en las extensiones sin asignar del archivo de datos.

No se incluyen páginas sin usar en extensiones asignadas.
version_store_reserved_page_count bigint Número total de páginas en las extensiones uniformes asignadas para el almacén de versiones. Las páginas de almacén de la versión nunca se asignan desde extensiones mixtas.

Las páginas de IAM no se incluyen, ya que siempre se asignan desde extensiones mixtas. Se incluyen las páginas PFS si están asignadas desde una extensión uniforme.

Para obtener más información, consulte sys.dm_tran_version_store (Transact-SQL).
user_object_reserved_page_count bigint Número total de páginas asignadas desde extensiones uniformes para objetos de usuario en la base de datos. En el recuento se incluyen las páginas no utilizadas de una extensión asignada.

Las páginas de IAM no se incluyen, ya que siempre se asignan desde extensiones mixtas. Se incluyen las páginas PFS si están asignadas desde una extensión uniforme.

Puede usar la total_pages columna de la vista de catálogo de sys.allocation_units para devolver el recuento de páginas reservadas de cada unidad de asignación del objeto de usuario. Sin embargo, la total_pages columna incluye páginas de IAM.
internal_object_reserved_page_count bigint Número total de páginas en extensiones uniformes asignadas para objetos internos en el archivo. En el recuento se incluyen las páginas no utilizadas de una extensión asignada.

Las páginas de IAM no se incluyen, ya que siempre se asignan desde extensiones mixtas. Se incluyen las páginas PFS si están asignadas desde una extensión uniforme.

No existe ninguna vista de catálogo ni objeto de administración dinámica que devuelva el recuento de páginas de cada objeto interno.
mixed_extent_page_count bigint Número total de páginas asignadas y no asignadas en extensiones mixtas asignadas en el archivo. Las extensiones mixtas contienen páginas asignadas a diferentes objetos. Este recuento no incluye todas las páginas IAM del archivo.
modified_extent_page_count bigint Se aplica a: SQL Server 2016 (13.x) SP2 y versiones posteriores.

Número total de páginas modificadas en extensiones asignadas del archivo desde la última copia de seguridad completa de la base de datos. El recuento de páginas modificada se puede usar para realizar un seguimiento del número de cambios diferenciales en la base de datos desde la última copia de seguridad completa, para decidir si se necesita una copia de seguridad diferencial.
pdw_node_id int Se aplica a: Azure Synapse Analytics, Sistema de la plataforma de análisis (PDW)

Identificador del nodo en el que se encuentra esta distribución.
distribution_id int Se aplica a: Azure Synapse Analytics, Sistema de la plataforma de análisis (PDW)

Identificador numérico único asociado a la distribución.

Comentarios

Los recuentos de páginas siempre son en el nivel de extensión. Por lo tanto, los valores de recuento de páginas siempre son un múltiplo de ocho. Las extensiones que contienen páginas de asignación del Mapa de asignación global (GAM) y del Mapa de asignación global compartido (SGAM) se asignan a extensiones uniformes. No se incluyen en los recuentos de páginas descritos anteriormente. Para obtener más información acerca de las páginas y las extensiones, consulte Guía de arquitectura de páginas y extensiones.

El contenido del almacén de versiones actual está en sys.dm_tran_version_store. El seguimiento de las páginas del almacén de la versión se realiza en el nivel de archivo en vez de en el nivel de sesión y tarea porque son recursos globales. Una sesión puede generar versiones, pero las versiones no se pueden quitar cuando finaliza la sesión. Debe tenerse en cuenta una limpieza del almacén de versiones cuando se tengan que ejecutar transacciones prolongadas que necesiten acceso a la versión determinada. La transacción de ejecución más larga relacionada con la limpieza del almacén de versiones se puede detectar viendo la columna elapsed_time_seconds en sys.dm_tran_active_snapshot_database_transactions.

Los cambios frecuentes en la mixed_extent_page_count columna pueden indicar un uso intensivo de páginas de SGAM. Cuando ocurre esto, puede ver muchas esperas de PAGELATCH_UP en las que el recurso esperado es una página SGAM. Para obtener más información, vea sys.dm_os_waiting_tasks (Transact-SQL), sys.dm_os_wait_stats (Transact-SQL) y sys.dm_os_latch_stats (Transact-SQL) .

Objetos de usuario

Los objetos siguientes se incluyen en los contadores de páginas de objetos de usuario:

  • Índices y tablas definidos por el usuario
  • Índices y tablas del sistema
  • Índices y tablas temporales globales
  • Índices y tablas temporales locales
  • Variables de tabla
  • Tablas devueltas en las funciones con valores de tabla.

Objetos internos

Los objetos internos solo están en tempdb. Los objetos siguientes se incluyen en los contadores de páginas de objetos internos:

  • Tablas de trabajo para operaciones de cola o cursor y almacenamiento de objetos grandes (LOB) temporales
  • Archivos de trabajo para operaciones como la combinación hash
  • Ordenaciones

Cardinalidades de relación

De En Relación
sys.dm_db_file_space_usage.database_id, file_id sys.dm_io_virtual_file_stats.database_id, file_id Uno a uno

Permisos

En SQL Server 2019 (15.x) y versiones anteriores, y SQL Instancia administrada, requiere VIEW SERVER STATE permiso.

En SQL Server 2022 (16.x) y versiones posteriores, requiere el permiso VIEW SERVER PERFORMANCE STATE en el servidor.

En los objetivos de servicio de SQL Database Basic, S0 y S1, y para las bases de datos de grupos elásticos, se requiere la cuenta de administrador del servidor, la cuenta de administrador de Microsoft Entra o la pertenencia al rol de ##MS_ServerStateReader##servidor. En el resto de objetivos del servicio de SQL Database, se requiere el permiso VIEW DATABASE STATE en la base de datos o la pertenencia en el rol del servidor ##MS_ServerStateReader##.

Ejemplos

Determinar la cantidad de espacio libre en tempdb

La consulta siguiente devuelve el número total de páginas libres y el espacio disponible total en megabytes (MB) disponibles en todos los archivos de datos de 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;

Determinar la cantidad de espacio utilizado por los objetos de usuario

La consulta siguiente devuelve el número total de páginas usadas por los objetos de usuario y el espacio total utilizado por los objetos de usuario en 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;

Consulte también