sys.allocation_units (Transact-SQL)
Si applica a: SQL Server database SQL di Azure Istanza gestita di 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. |
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)