sys.allocation_units (Transact-SQL)
適用於:Microsoft Fabric 中的 SQL ServerAzure SQL 資料庫 Azure SQL 受控執行個體 SQL 資料庫
包含資料庫中每個配置單位的數據列。
資料行名稱 | 資料類型 | 描述 |
---|---|---|
allocation_unit_id | bigint | 配置單位的標識碼。 在資料庫內是唯一的。 |
type | 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 資料 資料列溢位資料 請注意,傳回的值會排除內部索引頁和配置管理頁面。 |
注意
當您卸除或重建大型索引、卸除大型數據表或截斷大型數據表或分割區時,資料庫引擎 會延遲實際的頁面解除分配及其相關聯的鎖定,直到交易認可之後。 延遲卸除作業不會立即釋放已配置的空間。 因此,卸除或截斷大型物件之後,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)