sys.dm_db_page_info(Transact-SQL)
적용 대상: SQL Server 2019(15.x) Azure SQL 데이터베이스 Azure SQL Managed Instance
데이터베이스의 페이지에 대한 정보를 반환합니다. 이 함수는 object_id
, index_id
, partition_id
를 포함하여 페이지의 헤더 정보를 포함하는 하나의 행을 반환합니다. 대부분의 경우 이 함수를 사용하면 DBCC PAGE
를 사용할 필요가 없습니다.
참고 항목
sys.dm_db_page_info
는 현재 SQL Server 2019(15.x) 이상에서만 지원됩니다.
구문
sys.dm_db_page_info ( DatabaseId , FileId , PageId , Mode )
인수
DatabaseId | NULL | DEFAULT
데이터베이스 ID입니다. DatabaseId는 smallint입니다. 유효한 입력은 데이터베이스의 ID 번호입니다. 기본값은 NULL이지만 이 매개 변수에 대해 NULL 값을 보내면 오류가 발생합니다.
FileId | NULL | DEFAULT
파일 ID입니다. FileId가 int입니다. 유효한 입력은 DatabaseId로 지정된 데이터베이스에 있는 파일의 ID 번호입니다. 기본값은 NULL이지만 이 매개 변수에 대해 NULL 값을 보내면 오류가 발생합니다.
PageId | NULL | DEFAULT
페이지 ID입니다. PageId가 int입니다. 유효한 입력은 FileId로 지정된 파일에 있는 페이지의 ID 번호입니다. 기본값은 NULL이지만 이 매개 변수에 대해 NULL 값을 보내면 오류가 발생합니다.
Mode | NULL | DEFAULT
함수 출력의 세부 수준을 결정합니다. 'LIMITED'
는 모든 설명 열에 대해 NULL 값을 반환하고, 'DETAILED'는 설명 열을 채웁니다. DEFAULT
은 'LIMITED'
입니다.
반환된 테이블
열 이름 | 데이터 형식 | 설명 |
---|---|---|
database_id | int | 데이터베이스 ID입니다. Azure SQL Database에서 값은 단일 데이터베이스 또는 탄력적 풀 내에서 고유하지만 논리 서버 내에는 고유하지 않습니다. |
file_id | int | 파일 ID |
page_id | int | 페이지 ID |
page_header_version | int | 페이지 머리글 버전 |
page_type | int | 페이지 유형 |
page_type_desc | nvarchar(64) | 페이지 형식에 대한 설명 |
page_type_flag_bits | nvarchar(64) | 페이지 머리글의 형식 플래그 비트 |
page_type_flag_bits_desc | nvarchar(64) | 페이지 머리글의 형식 플래그 비트 설명 |
page_flag_bits | nvarchar(64) | 페이지 머리글의 플래그 비트 |
page_flag_bits_desc | nvarchar(256) | 페이지 머리글의 플래그 비트 설명 |
page_lsn | nvarchar(64) | 로그 시퀀스 번호/타임스탬프 |
page_level | int | 인덱스의 페이지 수준(리프 = 0) |
object_id | int | 페이지를 소유하는 개체의 ID |
index_id | int | 인덱스의 ID(힙 데이터 페이지의 경우 0) |
partition_id | bigint | 파티션 ID입니다. |
alloc_unit_id | bigint | 할당 단위의 ID |
is_encrypted | bit | 페이지 암호화 여부를 나타내는 비트 |
has_checksum | bit | 페이지에 체크섬 값이 있는지 여부를 나타내는 비트 |
checksum | int | 데이터 손상을 감지하는 데 사용되는 체크섬 값을 저장합니다. |
is_iam_pg | bit | 페이지가 IAM 페이지인지 여부를 나타내는 비트 |
is_mixed_ext | bit | 혼합 익스텐트에서 할당되었는지 여부를 나타내는 비트 |
has_ghost_records | bit | 페이지에 고스트 레코드가 포함되어 있는지 여부를 나타내는 비트 고스트 레코드는 삭제하도록 표시되었지만 아직 제거되지 않은 레코드입니다. |
has_version_records | bit | 페이지에 가속 데이터베이스 복구에 사용되는 버전 레코드가 포함되어 있는지 여부를 나타내는 비트 |
pfs_page_id | int | 해당 PFS 페이지의 페이지 ID |
pfs_is_allocated | bit | 페이지가 해당 PFS 페이지에 할당된 것으로 표시되는지 여부를 나타내는 비트 |
pfs_alloc_percent | int | 해당 PFS 바이트가 나타내는 할당 비율 |
pfs_status | nvarchar(64) | PFS 바이트 |
pfs_status_desc | nvarchar(64) | PFS 바이트에 대한 설명 |
gam_page_id | int | 해당 GAM 페이지의 페이지 ID |
gam_status | bit | GAM에 할당되었는지 여부를 나타내는 비트 |
gam_status_desc | nvarchar(64) | GAM 상태에 대한 설명 |
sgam_page_id | int | 해당 SGAM 페이지의 페이지 ID |
sgam_status | bit | SGAM에 할당되었는지 여부를 나타내는 비트 |
sgam_status_desc | nvarchar(64) | SGAM 상태 비트에 대한 설명 |
diff_map_page_id | int | 해당 차등 비트맵 페이지의 페이지 ID |
diff_status | bit | diff 상태가 변경되었는지 여부를 나타내는 비트 |
diff_status_desc | nvarchar(64) | diff 상태에 대한 설명 |
ml_map_page_id | int | 해당 최소 로깅 비트맵 페이지의 페이지 ID |
ml_status | bit | 페이지가 최소 로깅되었는지 여부를 나타내는 비트 |
ml_status_desc | nvarchar(64) | 최소 로깅 상태 비트에 대한 설명 |
prev_page_file_id | smallint | 이전 페이지 파일 ID |
prev_page_page_id | int | 이전 페이지의 페이지 ID |
next_page_file_id | smallint | 다음 페이지 파일 ID |
next_page_page_id | int | 다음 페이지의 페이지 ID |
fixed_length | smallint | 고정 크기 행의 길이 |
slot_count | smallint | 총 슬롯 수(사용 및 미사용 포함) 데이터 페이지의 경우 이 숫자는 행 수와 동일합니다. |
ghost_rec_count | smallint | 페이지에서 고스트로 표시된 레코드 수 고스트 레코드는 삭제하도록 표시되었지만 아직 제거되지 않은 레코드입니다. |
free_bytes | smallint | 페이지의 사용 가능한 바이트 수 |
free_data_offset | int | 데이터 영역 끝의 사용 가능한 공간 오프셋 |
reserved_bytes | smallint | 모든 트랜잭션에서 예약된 사용 가능한 바이트 수(힙인 경우) 고스트된 행 수(인덱스 리프인 경우) |
reserved_bytes_by_xdes_id | smallint | m_xdesID가 m_reservedCnt에 제공한 공간 디버깅 용도로만 사용 |
xdes_id | nvarchar(64) | m_reserved에 의해 제공된 최근 트랜잭션 디버깅 용도로만 사용 |
설명
sys.dm_db_page_info
동적 관리 함수는 페이지 머리글에 있는 page_id
, file_id
, index_id
, object_id
등과 같은 정보를 반환합니다. 이 정보는 다양한 성능(잠금 및 래치 경합) 및 손상 문제를 해결하고 디버깅하는 데 유용합니다.
sys.dm_db_page_info
는 대부분의 경우 DBCC PAGE
문 대신 사용할 수 있지만 페이지 본문이 아닌 페이지 머리글 정보만 반환합니다. DBCC PAGE
는 페이지의 전체 콘텐츠가 필요한 사용 사례에 계속 필요합니다.
다른 DMV와 함께 사용
sys.dm_db_page_info
의 중요한 사용 사례 중 하나는 페이지 정보를 노출하는 다른 DMV와 조인하는 것입니다. 이 사용 사례를 용이하게 하기 위해 페이지 정보를 8바이트 16진수 형식으로 노출하는 page_resource
라는 새 열이 추가되었습니다. 이 열은 sys.dm_exec_requests
와 sys.sysprocesses
에 추가 되었으며 필요에 따라 나중에 다른 DMV에 추가됩니다.
새 함수 sys.fn_PageResCracker
는 입력으로 page_resource
를 사용하고 database_id
, file_id
및 page_id
를 포함하는 단일 행을 출력합니다. 그런 다음 이 함수를 사용하여 sys.dm_exec_requests
또는 sys.sysprocesses
와 sys.dm_db_page_info
사이의 조인을 용이하게 할 수 있습니다
사용 권한
데이터베이스에 대한 VIEW DATABASE STATE
권한이 필요합니다.
SQL Server 2022 이상에 대한 사용 권한
데이터베이스에 대한 VIEW DATABASE PERFORMANCE STATE 권한이 필요합니다.
예제
A. 페이지의 모든 속성 표시
다음 쿼리는 기본 모드('LIMITED')를 사용하여 지정된 database_id
, file_id
, page_id
조합에 대한 모든 페이지 정보가 포함된 하나의 행을 반환합니다.
SELECT *
FROM sys.dm_db_page_info (5, 1, 15, DEFAULT);
B. 다른 DMV와 함께 sys.dm_db_page_info 사용
다음 쿼리는 행에 null이 아닌 sys.dm_exec_requests
이 포함된 경우 page_resource
에 의해 노출되는 wait_resource
당 하나의 행을 반환합니다.
SELECT page_info.*
FROM sys.dm_exec_requests AS d
CROSS APPLY sys.fn_PageResCracker(d.page_resource) AS r
CROSS APPLY sys.dm_db_page_info(r.db_id, r.file_id, r.page_id, 'LIMITED') AS page_info;