SQL Server 2019 에서 추가된sys.dm_db_page_info, sys.fn_PageResCracker 기능으로 대기 관련 정보 확인
· Version : SQL Server 2019
SQL Server 2019 CTP 2.0에서 추가된 스토리지 엔진의 새로운 기능으로 페이지 관련 대기를 볼 수 있는 sys.dm_db_page_info DMV가 추가 되었다. 이 기능은 기존의 DBCC로 확인할 수 있었던 tempdb 경합이나, 마지막 페이지 삽입 경합(las page insert contention) 및 페이지 수준의 블록킹 등을 확인할 수 있다.
sys.dm_db_page_info DMV는 데이터베이스 ID, 파일 ID, 페이지 ID 및 모드(LIMITED 또는 DETAILED)의 4가지 매개 변수를 사용한다. sys.dm_db_page_info는 object_id, index_id 및 partition_id 포함하여 페이지의 헤더 정보를 단일 행이 있는 테이블로 반환한다. 또한 sys.dm_exec_requests 또는 sys.sysprocesses DMV 함수와 조인하여 페이지 관련 경합이 있을때 이 정보를 확인할 수 있다. 아래 스크립트는 sys.dm_db_page_info, sys.fn_PageResCracker를 사용하여 모든 활성 요청에 대한 페이지 관련 대기를 확인할 수 있다.
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, 1) AS page_info |
위 새로운 기능에도 몇 가지 제한사항은 있다. 우선 DBCC PAGE를 완전히 대체할 수 없다. DBCC PAGE는 헤더 정보와 모든 데이터 및 슬롯 배열을 포함하여 페이지의 전체 내용을 제공한다. 또한 현재 sys.dm_exec_requests및 sys.sysprocesses에 대한 조인만 지원된다.
[참고자료]
2018-10-16 / Sungwook Kang / http://sqlmvp.kr
SQL Server, MSSQL, SQL 2019, Rowstore, Batch mode, Batch Mode on Rowstore, Intelligent Query Processing
출처: https://sqlmvp.tistory.com/1272?category=618825 [Database Lab]