Dela via


sys.allocation_units (Transact-SQL)

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL-databas i Förhandsversion av Microsoft Fabric

Innehåller en rad för varje allokeringsenhet i databasen.

Column name Data type Description
allocation_unit_id bigint ID för allokeringsenheten. Är unik i en databas.
type tinyint Typ av allokeringsenhet:

0 = Borttagen

1 = Data på rad (alla datatyper, utom LOB-datatyper)

2 = Stora objektdata (LOB) (text, ntext, bild, xml, stora värdetyper och CLR-användardefinierade typer)

3 = Rad-overflow-data
type_desc nvarchar(60) Beskrivning av typ av allokeringsenhet:

DROPPED

IN_ROW_DATA

LOB_DATA

ROW_OVERFLOW_DATA
container_id bigint ID för lagringscontainern som är associerad med allokeringsenheten.

Om typ = 1 eller 3 i ett radlagringsindex container_id = sys.partitions.hobt_id.

Om du skriver = 1 eller 3 i ett kolumnlagringsindex container_id = sys.column_store_row_groups.delta_store_hobt_id.

Om typen är 2 container_id = sys.partitions.partition_id.

0 = Allokeringsenhet markerad för uppskjuten borttagning
data_space_id int ID för den filgrupp där allokeringsenheten finns.
total_pages bigint Totalt antal sidor som allokerats eller reserverats av den här allokeringsenheten.
used_pages bigint Antal totalt antal sidor som faktiskt används.
data_pages bigint Antal använda sidor som har:

In-row data

LOB data

Row-overflow data



Observera att värdet som returneras exkluderar interna indexsidor och allokeringshanteringssidor.

Note

När du släpper eller återskapar stora index, släpper stora tabeller eller trunkerar stora tabeller eller partitioner, defererar databasmotorn de faktiska sidborttagningarna och deras associerade lås tills transaktionen har checkats in. Uppskjutna släppåtgärder frigör inte allokerat utrymme omedelbart. De värden som returneras av sys.allocation_units omedelbart efter att ett stort objekt har släppts eller trunkerats kanske inte återspeglar det faktiska tillgängliga diskutrymmet.

När accelererad databasåterställning är aktiverad används uppskjuten släpp oavsett objektstorlek.

Permissions

Kräver medlemskap i offentlig roll. För mer information, se inställningar för metadatasynlighet.

Examples

Fastställa utrymme som används av objekt och typ av en allokeringsenhet

Följande fråga returnerar alla användartabeller i en databas och mängden utrymme som används i varje, efter allokeringsenhetstyp.

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;

See Also

sys.partitions (Transact-SQL)
objektkatalogvyer (Transact-SQL)
katalogvyer (Transact-SQL)