Поделиться через


sys.allocation_units (Transact-SQL)

Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure базе данных SQL в Microsoft Fabric

Содержит одну строку для каждой единицы распределения в базе данных.

Имя столбца Тип данных Description
allocation_unit_id bigint Идентификатор единицы распределения. Уникален в базе данных.
type tinyint Тип единицы распределения:

0 = удаленная;

1 = внутристрочные данные (все типы данных, за исключением типов данных LOB);

2 = данные больших объектов (LOB) (text, ntext, image, xml, крупные типы значений и определяемые пользователем типы CLR)

3 = превышающие размер страницы данные строки.
type_desc nvarchar(60) Описание типа единицы распределения:

УПАЛ

IN_ROW_DATA

LOB_DATA

ROW_OVERFLOW_DATA
container_id bigint Идентификатор контейнера хранения, связанного с единицей распределения.

Если тип = 1 или 3 в индексе rowstore container_id = sys.partitions.hobt_id.

Если тип = 1 или 3 в индексе columnstore, 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 Количество страниц, включающих:

In-row data

LOB data

Row-overflow data



Обратите внимание, что возвращаемое значение исключает внутренние страницы индекса и страницы управления выделением.

Примечание.

При удалении или перестроении больших индексов, удалении больших таблиц или усечении больших таблиц или секций ядро СУБД откладывает фактическое размещение сделки страниц и связанные с ними блокировки до тех пор, пока транзакция не будет зафиксирована. Отложенные операции удаления не освобождают выделенное место немедленно. Поэтому значения, возвращаемые представлением каталога 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)