다음을 통해 공유


sys.allocation_units(Transact-SQL)

적용 대상: SQL ServerAzure SQL Database Azure SQL Managed Instance

데이터베이스의 각 할당 단위에 대해 한 행씩 있습니다.

열 이름 데이터 형식 설명
allocation_unit_id bigint 할당 단위의 ID입니다. 데이터베이스 내에서 고유합니다.
type tinyint 할당 단위 유형:

0 = 삭제됨

1 = 행 내 데이터(LOB 데이터 형식을 제외한 모든 데이터 형식)

2 = LOB(큰 개체) 데이터(텍스트, ntext, 이미지, xml, 큰 값 형식 및 CLR 사용자 정의 형식)

3 = 행 오버플로 데이터
type_desc nvarchar(60) 할당 단위 유형에 대한 설명:

떨어졌다

IN_ROW_DATA

LOB_DATA

ROW_OVERFLOW_DATA
container_id bigint 할당 단위와 연결된 스토리지 컨테이너의 ID입니다.

rowstore 인덱스 container_id = sys.partitions.hobt_id 형식이 1 또는 3이면

columnstore 인덱스의 유형 = 1 또는 3이면 container_id = sys.column_store_row_groups.delta_store_hobt_id입니다.

형식이 2이면 container_id = sys.partitions.partition_id.

0 = 삭제가 지연된 것으로 표시된 할당 단위
data_space_id int 이 할당 단위가 있는 파일 그룹의 ID입니다.
전체 페이지 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)