sys.dm_db_page_info(Transact-SQL)

적용 대상: Microsoft Fabric의 SQL Server 2019(15.x) 이상 버전 Azure SQL DatabaseAzure SQL Managed InstanceSQL 데이터베이스

데이터베이스의 페이지에 대한 정보를 반환합니다. 이 함수는 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 )

인수

데이터베이스ID | NULL | DEFAULT

데이터베이스 ID입니다. DatabaseIdsmallint입니다. 유효한 입력은 데이터베이스의 ID 번호입니다. 기본값은 NULL이지만 이 매개 변수에 대해 NULL 값을 보내면 오류가 발생합니다.

파일ID | NULL | DEFAULT

파일 ID입니다. FileIdint입니다. 유효한 입력은 DatabaseId로 지정된 데이터베이스에 있는 파일의 ID 번호입니다. 기본값은 NULL이지만 이 매개 변수에 대해 NULL 값을 보내면 오류가 발생합니다.

페이지ID | NULL | DEFAULT

페이지 ID입니다. PageIdint입니다. 유효한 입력은 FileId로 지정된 파일에 있는 페이지의 ID 번호입니다. 기본값은 NULL이지만 이 매개 변수에 대해 NULL 값을 보내면 오류가 발생합니다.

모드 | 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_requestssys.sysprocesses에 추가 되었으며 필요에 따라 나중에 다른 DMV에 추가됩니다.

새 함수 sys.fn_PageResCracker는 입력으로 page_resource를 사용하고 database_id, file_idpage_id를 포함하는 단일 행을 출력합니다. 그런 다음 이 함수를 사용하여 sys.dm_exec_requests 또는 sys.sysprocessessys.dm_db_page_info 사이의 조인을 용이하게 할 수 있습니다

사용 권한

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

SQL Server 2022 이상에 대한 사용 권한

데이터베이스에서 PERFORMANCE STATE 권한이 필요합니다 VIEWDATABASE .

예제

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이 아닌 wait_resource이 포함된 경우 sys.dm_exec_requests에 의해 노출되는 page_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;

참고 항목