Compartir a través de


sys.allocation_units (Transact-SQL)

Se aplica a: SQL Server Azure SQL Database Azure SQL Managed Instance Base de datos de Azure SQL de Microsoft Fabric

Contiene una fila por cada unidad de asignación de la base de datos.

Nombre de la columna Tipo de datos Descripción
allocation_unit_id bigint Id. de la unidad de asignación. Es único en una base de datos.
type tinyint Tipo de unidad de asignación:

0 = Quitado

1 = Datos de fila (todos los tipos de datos, excepto datos LOB)

2 = Datos de objetos grandes (LOB) (text, ntext, image, xml, tipos de valores grandes y tipos definidos por el usuario CLR)

3 = Datos de desbordamiento de fila
type_desc nvarchar(60) Descripción del tipo de unidad de asignación:

CAYÓ

IN_ROW_DATA

LOB_DATA

ROW_OVERFLOW_DATA
container_id bigint Id. del contenedor de almacenamiento asociado con la unidad de asignación.

Si escribe = 1 o 3 en un índice de almacén de filas container_id = sys.partitions.hobt_id.

Si escribe = 1 o 3 en un índice de almacén de columnas, container_id = sys.column_store_row_groups.delta_store_hobt_id.

Si type = 2, entonces container_id = sys.partitions.partition_id.

0 = Unidad de asignación marcada para eliminación diferida
data_space_id int Id. del grupo de archivos donde reside la unidad de asignación.
total_pages bigint Número total de páginas asignadas o reservadas por esta unidad de asignación.
used_pages bigint Número total de páginas que actualmente están en uso.
data_pages bigint Número de páginas usadas que tienen:

Datos de fila

Datos LOB

Datos de desbordamiento de fila



Tenga en cuenta que el valor devuelto excluye las páginas de índice internas y las páginas de administración de asignaciones.

Nota:

Al quitar o recompilar índices grandes, quitar tablas grandes o truncar tablas o particiones grandes, el Motor de base de datos aplaza las desasignaciones de página reales y sus bloqueos asociados, hasta después de que la transacción se confirme. Las operaciones de eliminación diferidas no liberan inmediatamente el espacio asignado. Por tanto, los valores devueltos por sys.allocation_units inmediatamente después de quitar o truncar un objeto grande pueden no reflejar el espacio en disco real que está disponible.

Cuando se habilita la recuperación acelerada de base de datos, se usa la eliminación diferida independientemente del tamaño del objeto.

Permisos

Debe pertenecer al rol public . Para obtener más información, consulte Metadata Visibility Configuration.

Ejemplos

Determinar el espacio utilizado por el objeto y el tipo de una unidad de asignación

La consulta siguiente devuelve todas las tablas de usuario de una base de datos y la cantidad de espacio utilizado en cada una de ellas por tipo de unidad de asignación.

SELECT t.object_id AS ObjectID,
       OBJECT_NAME(t.object_id) AS ObjectName,
       SUM(u.total_pages) * 8 AS Total_Reserved_kb,
       SUM(u.used_pages) * 8 AS Used_Space_kb,
       u.type_desc AS TypeDesc,
       MAX(p.rows) AS RowsCount
FROM sys.allocation_units AS u
JOIN sys.partitions AS p ON u.container_id = p.hobt_id
JOIN sys.tables AS t ON p.object_id = t.object_id
GROUP BY t.object_id,
         OBJECT_NAME(t.object_id),
         u.type_desc
ORDER BY Used_Space_kb DESC,
         ObjectName;

Consulte también

sys.partitions (Transact-SQL)
Vistas de catálogo de objetos (Transact-SQL)
Vistas de catálogo (Transact-SQL)