sys.dm_db_page_info(Transact-SQL)
적용 대상: SQL Server 2019 (15.x) Azure SQL DatabaseAzure SQL Managed Instance
데이터베이스의 페이지에 대한 정보를 반환합니다. 이 함수는 페이지의 머리글 정보를 포함하는 행 1개(예: 및 index_id
.)를 object_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 | 기본
데이터베이스의 ID입니다. DatabaseId가 smallint입니다. 유효한 입력은 데이터베이스의 ID 번호입니다. 기본값은 NULL이지만 이 매개 변수에 대해 NULL 값을 보내면 오류가 발생합니다.
FileId | NULL | 기본
파일의 ID입니다. FileId가 int입니다. 유효한 입력은 DatabaseId로 지정된 데이터베이스에 있는 파일의 ID 번호입니다. 기본값은 NULL이지만 이 매개 변수에 대해 NULL 값을 보내면 오류가 발생합니다.
PageId | NULL | 기본
페이지의 ID입니다. PageId가 int입니다. 유효한 입력은 FileId로 지정된 파일에 있는 페이지의 ID 번호입니다. 기본값은 NULL이지만 이 매개 변수에 대해 NULL 값을 보내면 오류가 발생합니다.
모드 | NULL | 기본
함수 출력의 세부 수준을 결정합니다. '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
페이지 머리글에 있는 등index_id
file_id
object_id
과 같은 page_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. 페이지의 모든 속성 표시
다음 쿼리는 지정된 database_id
file_id
page_id
, 기본 모드와 조합('LIMITED')에 대한 모든 페이지 정보가 포함된 한 행을 반환합니다.
SELECT *
FROM sys.dm_db_page_info (5, 1, 15, DEFAULT);
B. 다른 DMV와 함께 sys.dm_db_page_info 사용
다음 쿼리는 행에 sys.dm_exec_requests
null이 아닌 행이 포함된 경우 노출되는 행당 wait_resource
한 행을 반환합니다.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;
참고 항목
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기