sys.dm_db_partition_stats(Transact-SQL)

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform System(PDW)

현재 데이터베이스의 모든 파티션에 대해 페이지 및 행 수 정보를 반환합니다.

참고 항목

Azure Synapse Analytics 또는 PDW(Analytics Platform System)에서 이를 호출하려면 이름을 sys.dm_pdw_nodes_db_partition_stats사용합니다. partition_id sys.dm_pdw_nodes_db_partition_stats Azure Synapse Analytics 카탈로그 뷰의 sys.partitions partition_id 다릅니다. 이 구문은 Azure Synapse Analytics의 서버리스 SQL 풀에서 지원되지 않습니다.

열 이름 데이터 형식 설명
partition_id bigint 파티션의 ID입니다. 데이터베이스 내에서 고유합니다. Azure Synapse Analytics를 partition_idsys.partitions 제외한 카탈로그 뷰의 값과 동일합니다.
object_id int 파티션이 속한 테이블 또는 인덱싱된 뷰의 개체 ID입니다.
index_id int 파티션의 일부인 힙 또는 인덱스의 ID입니다.

0 = 힙
1 = 클러스터형 인덱스입니다.
> 1 = 비클러스터형 인덱스
partition_number int 인덱스 또는 힙 내의 1부터 시작하는 파티션 번호입니다.
in_row_data_page_count bigint 이 파티션에 행 내 데이터를 저장하는 데 사용할 페이지 수입니다. 파티션이 힙의 일부인 경우 값은 힙의 데이터 페이지 수입니다. 파티션이 인덱스의 일부인 경우 값은 리프 수준의 페이지 수입니다. (B+ 트리의 리프가 아닌 페이지는 개수에 포함되지 않습니다.) IAM(인덱스 할당 맵) 페이지는 두 경우 모두 포함되지 않습니다. xVelocity 메모리 최적화 columnstore 인덱스의 경우 항상 0입니다.
in_row_used_page_count bigint 이 파티션의 행 내 데이터를 저장하고 관리하는 데 사용하는 총 페이지 수입니다. 이 개수에는 비리프 B+ 트리 페이지, IAM 페이지 및 in_row_data_page_count 열에 포함된 모든 페이지가 포함됩니다. columnstore 인덱스의 경우 항상 0입니다.
in_row_reserved_page_count bigint 페이지 사용 여부에 관계없이 이 파티션의 행 내부 데이터를 저장하고 관리하는 데 사용하도록 예약된 페이지의 총 수입니다. columnstore 인덱스의 경우 항상 0입니다.
lob_used_page_count bigint 파티션 내에서 행 외부 텍스트, ntext, image, varchar(max), nvarchar(max), varbinary(max) 및 xml 열을 저장하고 관리하는 데 사용할 페이지 수입니다. IAM 페이지가 포함됩니다.

파티션의 columnstore 인덱스를 저장하고 관리하는 데 사용되는 LOB의 총 수입니다.
lob_reserved_page_count bigint 페이지 사용 여부에 관계없이 행 외부 텍스트, ntext, image, varchar(max), nvarchar(max), varbinary(max) 및 xml 열을 저장하고 관리하기 위해 예약된 총 페이지 수입니다. IAM 페이지가 포함됩니다.

파티션에 columnstore 인덱스 저장 및 관리를 위해 예약된 총 LOB 수입니다.
row_overflow_used_page_count bigint 파티션 내의 행 오버플로 varchar, nvarchar, varbinary 및 sql_variant 열을 저장하고 관리하는 데 사용하는 페이지 수입니다. IAM 페이지가 포함됩니다.

columnstore 인덱스의 경우 항상 0입니다.
row_overflow_reserved_page_count bigint 페이지 사용 여부에 관계없이 파티션 내에서 행 오버플로 varchar, nvarchar, varbinary 및 sql_variant 열을 저장하고 관리하기 위해 예약된 총 페이지 수입니다. IAM 페이지가 포함됩니다.

columnstore 인덱스의 경우 항상 0입니다.
used_page_count bigint 파티션에 사용되는 페이지의 총 수입니다. in_row_used_page_count lob_used_page_count + row_overflow_used_page_count + 계산됩니다.
reserved_page_count bigint 파티션에 사용하도록 예약된 페이지의 총 수입니다. in_row_reserved_page_count lob_reserved_page_count + row_overflow_reserved_page_count + 계산됩니다.
row_count bigint 파티션의 대략적인 행 수입니다.
pdw_node_id int 적용 대상: Azure Synapse Analytics, Analytics Platform System(PDW)

이 배포가 있는 노드의 식별자입니다.
distribution_id int 적용 대상: Azure Synapse Analytics, Analytics Platform System(PDW)

분포와 연결된 고유 숫자 ID입니다.

설명

DMV(동적 관리 뷰)에는 sys.dm_db_partition_stats 행 내 데이터 LOB 데이터를 저장 및 관리하는 데 사용되는 공간에 대한 정보와 데이터베이스의 모든 파티션에 대한 행 오버플로 데이터가 표시됩니다. 파티션마다 행 하나가 표시됩니다.

출력의 기반이 되는 개수는 메모리에 캐시되거나 다양한 시스템 테이블의 디스크에 저장됩니다.

행 내부 데이터, LOB 데이터 및 행 오버플로 데이터는 파티션을 구성하는 세 개의 할당 단위를 나타냅니다. 데이터베이스의 각 할당 단위에 대한 메타데이터에 대해 sys.allocation_units 카탈로그 뷰를 쿼리할 수 있습니다.

힙 또는 인덱스가 분할되지 않은 경우 파티션 번호 = 1인 파티션 하나로 구성됩니다. 따라서 해당 힙 또는 인덱스용 행은 하나만 반환됩니다. 데이터베이스에 있는 모든 테이블과 인덱스의 각 파티션에 관한 메타데이터에 대해 sys.partitions 카탈로그 뷰를 쿼리할 수 있습니다.

개별 테이블이나 인덱스에 대한 총 수는 관련된 모든 파티션에 대한 수를 더하여 얻을 수 있습니다.

사용 권한

동적 관리 뷰를 VIEW DATABASE STATE 쿼리 sys.dm_db_partition_stats 하려면 필요한 권한과 VIEW DEFINITION 권한이 필요합니다. 동적 관리 뷰 사용 권한에 관한 자세한 내용은 동적 관리 뷰 및 함수(Transact-SQL)를 참조하세요.

SQL Server 2022 이상에 대한 권한

데이터베이스에 대한 VIEW DATABASE PERFORMANCE STATE 및 VIEW SECURITY DEFINITION 권한이 필요합니다.

예제

A. 데이터베이스에 있는 모든 인덱스 및 힙의 모든 파티션에 대한 모든 개수를 반환합니다.

다음 예제에서는 AdventureWorks2022 데이터베이스에 있는 모든 인덱스 및 힙의 모든 파티션에 대한 모든 개수를 보여 줍니다.

USE AdventureWorks2022;  
GO  
SELECT * FROM sys.dm_db_partition_stats;  
GO  

B. 테이블 및 해당 인덱스의 모든 파티션에 대한 모든 개수를 반환합니다.

다음 예제에서는 테이블 및 해당 인덱스의 모든 파티션에 HumanResources.Employee 대한 모든 개수를 보여 줍니다.

USE AdventureWorks2022;  
GO  
SELECT * FROM sys.dm_db_partition_stats   
WHERE object_id = OBJECT_ID('HumanResources.Employee');  
GO  

C. 힙 또는 클러스터형 인덱스에 대해 사용된 총 페이지 및 총 행 수를 반환합니다.

다음 예제에서는 테이블의 힙 또는 클러스터형 인덱 HumanResources.Employee 스에 대해 사용된 총 페이지와 총 행 수를 반환합니다. 테이블은 Employee 기본적으로 분할되지 않으므로 합계에는 하나의 파티션만 포함됩니다.

USE AdventureWorks2022;  
GO  
SELECT SUM(used_page_count) AS total_number_of_used_pages,   
    SUM (row_count) AS total_number_of_rows   
FROM sys.dm_db_partition_stats  
WHERE object_id=OBJECT_ID('HumanResources.Employee')    AND (index_id=0 or index_id=1);  
GO