sys.dm_db_file_space_usage(Transact-SQL)
적용 대상: SQL Server Azure SQL 데이터베이스 Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform 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_id file_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. 버전 저장소 페이지는 전역 리소스이므로 세션 및 작업 수준 대신 파일 수준에서 추적됩니다. 세션은 버전을 생성할 수 있지만 세션이 종료되면 버전을 제거할 수 없습니다. 버전 저장소 정리는 특정 버전에 액세스해야 하는 가장 오래 실행되는 트랜잭션을 고려해야 합니다. 버전 저장소 정리와 관련된 가장 오래 실행되는 트랜잭션은 sys.dm_tran_active_snapshot_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, S0 및 S1 서비스 목표 또는 탄력적 풀 내의 데이터베이스에 대해서는 서버 관리자 계정, 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;