sys.allocation_units (Transact-SQL)

適用於:SQL ServerAzure SQL DatabaseAzure SQL 受控執行個體

針對資料庫中每個配置單位,各包含一個資料列。

資料行名稱 資料類型 描述
allocation_unit_id bigint 配置單位的識別碼。 在資料庫中,這是唯一的。
類型 tinyint 配置單位的類型:

0 = 已卸除

1 = 同資料列資料 (除 LOB 資料類型之外的所有資料類型)

2 = 大型物件 (LOB) 資料 (textNtextimagexml、large value types 和 CLR 使用者定義型別)

3 = 資料列溢位資料
type_desc nvarchar(60) 配置單位類型的描述:

下降

IN_ROW_DATA

LOB_DATA

ROW_OVERFLOW_DATA
container_id bigint 與配置單位相關聯的儲存體容器識別碼。

如果 type = 1 或 3 在資料列存放區索引中,container_id = sys.partitions.hobt_id。

如果資料行存放區索引中的 type = 1 或 3,container_id = sys.column_store_row_groups.delta_store_hobt_id。

如果 type 是 2,則 container_id = sys.partitions.partition_id。

0 = 標示要延遲卸除的配置單位
data_space_id int 這個配置單位所在的檔案群組識別碼。
total_pages bigint 這個配置單位所配置或保留的總頁數。
used_pages bigint 實際使用中的總頁數。
data_pages bigint 含有下列項目的使用頁數:

同資料列資料

LOB 資料

資料列溢位資料



請注意,傳回的值會排除內部索引頁和建構管理頁面。

注意

當您卸載或重建大型索引、卸載大型資料表或截斷大型資料表或分割區時,Database Engine 會延遲實際的頁面解除配置及其相關聯的鎖定,直到交易認可之後為止。 延遲的卸除作業並不會立即釋出已配置的空間。 因此,在卸除或截斷大型物件之後,sys.allocation_units 傳回的值不一定能反映實際可用的磁碟空間。

啟用 加速資料庫復原 時,不論物件大小為何,都會使用延後卸載。

權限

需要 public 角色的成員資格。 如需相關資訊,請參閱 Metadata Visibility Configuration

範例

判斷配置單位的物件和類型所使用的空間

下列查詢會依配置單位類型傳回資料庫中的所有使用者資料表,以及每個資料庫中所使用的空間量。

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;

另請參閱

sys.partitions (Transact-SQL)
物件目錄檢視 (Transact-SQL)
目錄檢視 (Transact-SQL)