Condividi tramite


sys.allocation_units (Transact-SQL)

Si applica a: SQL Server database SQL di Azure Istanza gestita di SQL di Azure database SQL in Microsoft Fabric

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.
type 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, tipi valore di grandi dimensioni e tipi CLR definiti dall'utente)

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 dell'allocazione.

Nota

Quando si eliminano o ricompilano indici di grandi dimensioni, si eliminano tabelle di grandi dimensioni o partizioni o si troncano tabelle o partizioni di grandi dimensioni, il motore di database rinvia le deallozioni di pagina effettive e i relativi blocchi associati fino a quando non viene eseguito 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 il ripristino accelerato del database è abilitato, l'eliminazione posticipata viene utilizzata 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 dal tipo di un'unità di allocazione

La query seguente restituisce tutte le tabelle utente in un database e la quantità di spazio usata in ogni 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;

Vedi anche

sys.partitions (Transact-SQL)
Viste del catalogo oggetti (Transact-SQL)
Viste del catalogo (Transact-SQL)