sys.allocation_units (Transact-SQL)

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Contient une ligne pour chaque unité d'allocation de la base de données.

Nom de la colonne Type de données Description
allocation_unit_id bigint Identificateur de l'unité d'allocation. Unique dans une base de données.
type tinyint Type de l'unité d'allocation :

0 = Supprimée

1 = Données dans les lignes (tous types de données à l'exception du type LOB)

2 = Données d’objet volumineux (LOB) (texte, ntext, image, xml, types à grande valeur et types CLR définis par l’utilisateur)

3 = Données en dépassement de capacité des lignes
type_desc nvarchar(60) Description du type d'unité d'allocation :

ABANDONNÉ

IN_ROW_DATA

LOB_DATA

ROW_OVERFLOW_DATA
container_id bigint ID du conteneur de stockage associé à l'unité d'allocation.

Si type = 1 ou 3 dans un index rowstore container_id = sys.partitions.hobt_id.

Si type = 1 ou 3 dans un index columnstore, container_id = sys.column_store_row_groups.delta_store_hobt_id.

Si le type est égal à 2, container_id = sys.partitions.partition_id.

0 = Unité d'allocation marquée pour suppression différée.
data_space_id int ID du groupe de fichiers dans lequel se trouve cette unité d'allocation.
total_pages bigint Nombre total de pages allouées ou réservées par cette unité d'allocation.
used_pages bigint Nombre total de pages en cours d'utilisation.
data_pages bigint Nombre de pages utilisées qui comportent :

Données dans la ligne (In-row data)

Données LOB (LOB data)

Données de dépassement de ligne (Row-overflow data)



Notez que la valeur retournée exclut les pages d’index internes et les pages de gestion des allocations.

Notes

Lorsque vous supprimez ou reconstruisez des index volumineux, supprimez des tables volumineuses ou tronquez des tables ou des partitions volumineuses, le Moteur de base de données reporte les désallocations de pages réelles et leurs verrous associés jusqu’à ce que la transaction soit validée. Les opérations de suppression différées ne libèrent pas immédiatement l'espace alloué. Par conséquent, il se peut que les valeurs renvoyées par sys.allocation_units immédiatement après la suppression ne reflètent pas l'espace disque réellement disponible.

Lorsque la récupération de base de données accélérée est activée, la suppression différée est utilisée quelle que soit la taille de l’objet.

Autorisations

Nécessite l'appartenance au rôle public . Pour plus d'informations, consultez Metadata Visibility Configuration.

Exemples

Déterminer l’espace utilisé par l’objet et le type d’une unité d’allocation

La requête suivante retourne toutes les tables utilisateur d’une base de données et la quantité d’espace utilisée dans chacune d’elles, par type d’unité d’allocation.

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;

Voir aussi

sys.partitions (Transact-SQL)
Vues de catalogue d'objets (Transact-SQL)
Affichages catalogue (Transact-SQL)