sys.allocation_units (Transact-SQL)
Se aplica a: SQL ServerAzure SQL Database Azure SQL Instancia administrada
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)