sys.allocation_units (Transact-SQL)
適用於:SQL ServerAzure SQL DatabaseAzure SQL 受控執行個體
針對資料庫中每個配置單位,各包含一個資料列。
資料行名稱 | 資料類型 | 描述 |
---|---|---|
allocation_unit_id | bigint | 配置單位的識別碼。 在資料庫中,這是唯一的。 |
類型 | tinyint | 配置單位的類型: 0 = 已卸除 1 = 同資料列資料 (除 LOB 資料類型之外的所有資料類型) 2 = 大型物件 (LOB) 資料 (text、 Ntext、 image、 xml、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)
意見反映
https://aka.ms/ContentUserFeedback。
即將推出:我們會在 2024 年淘汰 GitHub 問題,並以全新的意見反應系統取代並作為內容意見反應的渠道。 如需更多資訊,請參閱:提交及檢視以下的意見反映: