sys.allocation_units (Transact-SQL)

Si applica a: sìSQL Server (tutte le versioni supportate) Sìdatabase SQL di Azure

Contiene una riga per ogni unità di allocazione nel database.

Nome colonna Tipo di dati Descrizione
allocation_unit_id bigint ID dell'unità di allocazione. Valore univoco all'interno di un database.
tipo tinyint Tipo di unità di allocazione:

0 = Rimossa

1 = Dati all'interno di righe (tutti i tipi di dati, eccetto i tipi di dati LOB)

2 = Dati LOB (Large Object) (text, ntext, image, xml, large value types e CLR user-defined types)

3 = Dati di overflow della riga
type_desc nvarchar(60) Descrizione del tipo dell'unità di allocazione:

CADUTO

IN_ROW_DATA

LOB_DATA

ROW_OVERFLOW_DATA
container_id bigint ID del contenitore di archiviazione associato all'unità di allocazione.

Se type = 1 o 3 in un indice rowstore container_id = sys.partitions.hobt_id.

Se type = 1 o 3 in un indice columnstore, container_id = sys.column_store_row_groups.delta_store_hobt_id.

Se type è 2, allora container_id = sys.partitions.partition_id.

0 = Unità di allocazione contrassegnata per la rimozione posticipata
data_space_id int ID del filegroup contenente l'unità di allocazione.
total_pages bigint Numero totale di pagine allocate o riservate dall'unità di allocazione.
used_pages bigint Numero totale di pagine effettivamente utilizzate.
data_pages bigint Numero di pagine utilizzate contenenti:

Dati In-row

Dati LOB

Dati Row-overflow



Si noti che il valore restituito esclude le pagine di indice interne e le pagine di gestione delle allocazioni.

Nota

Quando si eliminano o ricompilano indici di grandi dimensioni, si eliminano tabelle di grandi dimensioni o si troncano tabelle o partizioni di grandi dimensioni, Motore di database l'oggetto rinvia le deallocazione di pagina effettive e i relativi blocchi associati, fino a dopo il commit della transazione. Le operazioni di eliminazione posticipate non rendono immediatamente disponibile lo spazio allocato. Pertanto, i valori restituiti da sys.allocation_units subito dopo l'eliminazione o il troncamento di un oggetto di grandi dimensioni potrebbero non corrispondere allo spazio su disco effettivamente disponibile.

Quando ripristino accelerato del database abilitata, l'eliminazione posticipata viene usata indipendentemente dalle dimensioni dell'oggetto.

Autorizzazioni

È richiesta l'appartenenza al ruolo public . Per altre informazioni, vedere Metadata Visibility Configuration.

Esempi

Determinare lo spazio usato dall'oggetto e il tipo di un'unità di allocazione

La query seguente restituisce tutte le tabelle utente in un database e la quantità di spazio usata in ognuna, in base al tipo di unità di allocazione.

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;

Vedere anche

sys.partitions (Transact-SQL)
Viste del catalogo dell'oggetto (Transact-SQL)
Viste del catalogo (Transact-SQL)