sys.dm_db_file_space_usage(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_file_space_usage사용합니다. 이 구문은 Azure Synapse Analytics의 서버리스 SQL 풀에서 지원되지 않습니다.

열 이름 데이터 형식 설명
database_id smallint 데이터베이스 ID입니다.

Azure SQL Database에서 값은 단일 데이터베이스 또는 탄력적 풀 내에서 고유하지만 논리 서버 내에는 없습니다.
file_id smallint 파일의 ID입니다.

file_idfile_id는 sys.dm_io_virtual_file_stats 및 sys.sysfiles의 fileid에 매핑됩니다.
filegroup_id smallint 적용 대상: SQL Server 2012(11.x) 이상 버전.

파일 그룹 ID입니다.
total_page_count bigint 적용 대상: SQL Server 2012(11.x) 이상 버전.

데이터 파일의 총 페이지 수입니다.
allocated_extent_page_count bigint 적용 대상: SQL Server 2012(11.x) 이상 버전.

데이터 파일의 할당된 익스텐트에서 총 페이지 수입니다.
unallocated_extent_page_count bigint 데이터 파일의 할당되지 않은 익스텐트에서 총 페이지 수입니다.

할당된 익스텐트에서 사용되지 않는 페이지는 포함되지 않습니다.
version_store_reserved_page_count bigint 버전 저장소에 할당된 균일한 범위의 총 페이지 수입니다. 버전 저장소 페이지는 혼합 익스텐트에서 할당되지 않습니다.

IAM 페이지는 항상 혼합 익스텐트에서 할당되므로 포함되지 않습니다. PFS 페이지는 균일한 범위에서 할당된 경우 포함됩니다.

자세한 내용은 sys.dm_tran_version_store(Transact-SQL)를 참조 하세요.
user_object_reserved_page_count bigint 데이터베이스의 사용자 개체에 대해 균일한 익스텐트에서 할당된 총 페이지 수입니다. 할당된 익스텐트에서 사용되지 않는 페이지가 개수에 포함됩니다.

IAM 페이지는 항상 혼합 익스텐트에서 할당되므로 포함되지 않습니다. PFS 페이지는 균일한 범위에서 할당된 경우 포함됩니다.

sys.allocation_units 카탈로그 뷰의 열을 사용하여 total_pages 사용자 개체에 있는 각 할당 단위의 예약된 페이지 수를 반환할 수 있습니다. 그러나 열에는 total_pages IAM 페이지가 포함됩니다.
internal_object_reserved_page_count bigint 파일에서 내부 개체에 대해 할당된 단일 익스텐트의 총 페이지 수입니다. 할당된 익스텐트에서 사용되지 않는 페이지가 개수에 포함됩니다.

IAM 페이지는 항상 혼합 익스텐트에서 할당되므로 포함되지 않습니다. PFS 페이지는 균일한 범위에서 할당된 경우 포함됩니다.

각 내부 개체의 페이지 수를 반환하는 카탈로그 뷰 또는 동적 관리 개체가 없습니다.
mixed_extent_page_count bigint 파일의 할당된 혼합 익스텐트에서 할당되고 할당되지 않은 총 페이지 수입니다. 혼합 익스텐트에는 다른 개체에 할당된 페이지가 포함됩니다. 이 개수에는 파일의 모든 IAM 페이지가 포함됩니다.
modified_extent_page_count bigint 적용 대상: SQL Server 2016(13.x) SP2 이상 버전.

마지막 전체 데이터베이스 백업 이후 파일의 할당된 범위에서 수정된 총 페이지 수입니다. 수정된 페이지 수는 마지막 전체 백업 이후 데이터베이스의 차등 변경 횟수를 추적하여 차등 백업이 필요한지 여부를 결정하는 데 사용할 수 있습니다.
pdw_node_id int 적용 대상: Azure Synapse Analytics, Analytics Platform System(PDW)

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

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

설명

페이지 수는 항상 익스텐트 수준에 있습니다. 따라서 페이지 수 값은 항상 8의 배수입니다. GAM(전역 할당 맵) 및 SGAM(공유 전역 할당 맵) 할당 페이지가 포함된 익스텐트에서 균일한 익스텐트 할당이 할당됩니다. 앞에서 설명한 페이지 수에는 포함되지 않습니다. 페이지 및 익스텐트에 대한 자세한 내용은 페이지 및 익스텐트 아키텍처 가이드를 참조 하세요.

현재 버전 저장소의 콘텐츠가 sys.dm_tran_version_store. 버전 저장소 페이지는 전역 리소스이므로 세션 및 작업 수준 대신 파일 수준에서 추적됩니다. 세션은 버전을 생성할 수 있지만 세션이 종료되면 버전을 제거할 수 없습니다. 버전 저장소 클린up은 특정 버전에 액세스해야 하는 가장 오래 실행되는 트랜잭션을 고려해야 합니다. 버전 저장소 클린 업과 관련된 가장 긴 실행 트랜잭션은 sys.dm_tran_active_스냅샷_database_transactions elapsed_time_seconds 열을 확인하여 검색할 수 있습니다.

열이 자주 변경되면 mixed_extent_page_count SGAM 페이지가 많이 사용되었음을 나타낼 수 있습니다. 이 경우 대기 리소스가 SGAM 페이지인 PAGELATCH_UP 대기를 많이 볼 수 있습니다. 자세한 내용은 sys.dm_os_waiting_tasks(Transact-SQL), sys.dm_os_wait_stats(Transact-SQL)sys.dm_os_latch_stats(Transact-SQL)를 참조하세요.

사용자 개체

다음 개체는 사용자 개체 페이지 카운터에 포함됩니다.

  • 사용자 정의 테이블 및 인덱스
  • 시스템 테이블 및 인덱스
  • 전역 임시 테이블 및 인덱스
  • 로컬 임시 테이블 및 인덱스
  • 테이블 변수
  • 테이블 반환 함수에 반환된 테이블

내부 개체

내부 개체는 .에만 있습니다 tempdb. 내부 개체 페이지 카운터에 포함되는 개체는 다음과 같습니다.

  • 커서 또는 스풀 작업 및 임시 LOB(큰 개체) 스토리지에 대한 작업 테이블
  • 해시 조인과 같은 작업에 대한 작업 파일
  • 정렬 실행

관계 카드

보낸 사람 수행할 작업 관계
sys.dm_db_file_space_usage.database_id, file_id sys.dm_io_virtual_file_stats.database_id, file_id 일 대 일

사용 권한

SQL Server 2019(15.x) 및 이전 버전 및 SQL Managed Instance에는 사용 권한이 필요합니다 VIEW SERVER STATE .

SQL Server 2022(16.x) 이상 버전에서는 서버에 대한 VIEW SERVER PERFORMANCE STATE 권한이 필요합니다.

SQL Database Basic, S0S1 서비스 목표 및 탄력적 풀의 데이터베이스에는 서버 관리자 계정, Microsoft Entra 관리자 계정 또는 서버 역할##MS_ServerStateReader##멤버 자격이 필요합니다. 다른 모든 SQL Database 서비스 목표에 대해서는 데이터베이스에 대한 VIEW DATABASE STATE 권한 또는 ##MS_ServerStateReader## 서버 역할의 멤버 자격이 필요합니다.

예제

에서 사용 가능한 공간의 양을 결정합니다. tempdb

다음 쿼리는 사용 가능한 총 페이지 수와 사용 가능한 tempdb총 공간을 MB(메가바이트)로 반환합니다.

USE tempdb;
GO

SELECT
    SUM(unallocated_extent_page_count) AS [free pages],
    (SUM(unallocated_extent_page_count) * 1.0 / 128) AS [free space in MB]
FROM sys.dm_db_file_space_usage;

사용자 개체에서 사용하는 공간 크기 결정

다음 쿼리는 사용자 개체에서 사용되는 총 페이지 수와 사용자 개체에서 tempdb사용하는 총 공간을 반환합니다.

USE tempdb;
GO

SELECT
    SUM(user_object_reserved_page_count) AS [user object pages used],
    (SUM(user_object_reserved_page_count) * 1.0 / 128) AS [user object space in MB]
FROM sys.dm_db_file_space_usage;

참고 항목