sys.allocation_units (Transact-SQL)
S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance Base de données SQL dans Microsoft Fabric
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 de valeurs volumineuses 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 : TOMBER IN_ROW_DATA LOB_DATA ROW_OVERFLOW_DATA |
container_id | bigint | ID du conteneur de stockage associé à l'unité d'allocation. Si le type = 1 ou 3 dans un index rowstore container_id = sys.partitions.hobt_id. Si le 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. |
Remarque
Lorsque vous supprimez ou régénérez 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 page 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 indépendamment de 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 chacun, 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)