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


sys.allocation_units (Transact-SQL)

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

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

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

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

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

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

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

DROPPED

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



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

Note

При удалении или перестроении больших индексов, удалении больших таблиц или усечении больших таблиц или секций ядро СУБД откладывает фактическое размещение сделки страниц и связанные с ними блокировки до тех пор, пока транзакция не будет зафиксирована. Отложенные операции удаления не освобождают выделенное место немедленно. Поэтому значения, возвращаемые представлением каталога sys.allocation_units сразу после удаления или усечения большого объекта, могут не отражать реальный объем доступного места на диске.

При включении ускорения восстановления базы данных отложенное удаление используется независимо от размера объекта.

Permissions

Необходимо быть членом роли public. Дополнительные сведения см. в разделе Metadata Visibility Configuration.

Examples

Определение пространства, используемого объектом и типом единицы выделения

Следующий запрос возвращает все пользовательские таблицы в базе данных и объем пространства, используемого в каждом типе единицы выделения.

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;

See Also

sys.partitions (Transact-SQL)
Представления каталога объектов (Transact-SQL)
Представления каталога (Transact-SQL)