sys.allocation_units (Transact-SQL)

Berlaku untuk:Database SQL Server Azure SQL Azure SQL Managed Instance

Berisi baris untuk setiap unit alokasi dalam database.

Nama kolom Jenis data Deskripsi
allocation_unit_id bigint ID unit alokasi. Unik dalam database.
jenis tinyint Jenis unit alokasi:

0 = Dihilangkan

1 = Data dalam baris (semua jenis data, kecuali jenis data LOB)

2 = Data objek besar (LOB) (teks, ntext, gambar, xml, jenis nilai besar, dan jenis yang ditentukan pengguna CLR)

3 = Data luapan baris
type_desc nvarchar(60) Deskripsi jenis unit alokasi:

MENJATUHKAN

IN_ROW_DATA

LOB_DATA

ROW_OVERFLOW_DATA
container_id bigint ID kontainer penyimpanan yang terkait dengan unit alokasi.

Jika jenis = 1 atau 3 dalam indeks rowstore container_id = sys.partitions.hobt_id.

Jika jenis = 1 atau 3 dalam indeks penyimpan kolom, container_id = sys.column_store_row_groups.delta_store_hobt_id.

Jika jenis adalah 2, maka container_id = sys.partitions.partition_id.

0 = Unit alokasi ditandai untuk penurunan yang ditangguhkan
data_space_id int ID grup file tempat unit alokasi ini berada.
total_pages bigint Jumlah total halaman yang dialokasikan atau dicadangkan oleh unit alokasi ini.
used_pages bigint Jumlah total halaman yang benar-benar digunakan.
data_pages bigint Jumlah halaman yang digunakan yang memiliki:

Data dalam baris

Data LOB

Data luapan baris



Perhatikan bahwa nilai yang dikembalikan mengecualikan halaman indeks internal dan halaman manajemen alokasi.

Catatan

Saat Anda menjatuhkan atau membangun kembali indeks besar, menjatuhkan tabel besar, atau memotong tabel atau partisi besar, Mesin Database menangguhkan dealokasi halaman aktual, dan kunci terkaitnya, hingga setelah transaksi diterapkan. Operasi penurunan yang ditangguhkan tidak segera melepaskan ruang yang dialokasikan. Oleh karena itu, nilai yang dikembalikan oleh sys.allocation_units segera setelah menghilangkan atau memotong objek besar mungkin tidak mencerminkan ruang disk aktual yang tersedia.

Ketika Pemulihan Database Yang Dipercepat diaktifkan, penurunan yang ditangguhkan digunakan terlepas dari ukuran objek.

Izin

Memerlukan keanggotaan dalam peran publik . Untuk informasi selengkapnya, lihat Konfigurasi Visibilitas Metadata.

Contoh

Menentukan ruang yang digunakan oleh objek dan jenis unit alokasi

Kueri berikut mengembalikan semua tabel pengguna dalam database dan jumlah ruang yang digunakan di masing-masing, berdasarkan jenis unit alokasi.

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;

Lihat juga

sys.partitions (Transact-SQL)
Tampilan Katalog Objek (Transact-SQL)
Tampilan Katalog (Transact-SQL)