제목 : SQL Server 2008 - 새로운 DMV sys.dm_os_process_memory
SQL 프로세스의 메모리 상태에 대해서 보여주는 DMV입니다.
기존의 DBCC MEMORYSTATUS와 같은 SQL의 내부 메모리 개체에 대해서 보여주는게 아닌
OS입장에서의 프로세스 메모리에 대해서 보여줍니다.
x64환경이 보편화되어 이전보다 메모리에 대한 이슈가 있는 시점에
보다 쉽게 현재 문제 및 현재 상태에 대해서 파악 할 수 있을것 같습니다.
-- 아래는 온라인 설명서에서 발췌
SQL Server 프로세스 공간에 소요되는 대부분의 메모리 할당은 이러한 할당을 추적 및 계산하도록 허용된 인터페이스를 통해 제어됩니다.
그러나 메모리 할당은 내부 메모리 관리 루틴을 거치지 않는 SQL Server 주소 공간에서 수행될 수도 있습니다. 값은 기본 운영 체제 호출을 통해 얻습니다. 이러한 값은 잠긴 페이지 할당 또는 대용량 페이지 할당을 조절하는 경우를 제외하고는 SQL Server 내부 메서드에 의해 조작되지 않습니다.
메모리 크기를 나타내는 모든 반환 값은 킬로바이트(KB) 단위로 표시됩니다. total_virtual_address_space_reserved_kb 열은 virtual_memory_in_bytes from sys.dm_os_sys_info의 중복입니다.
다음 표에서는 프로세스 주소 공간의 전체적인 구조를 보여 줍니다.
열 이름 |
데이터 형식 |
설명 |
physical_memory_in_use |
bigint |
운영 체제에서 보고한 내용에 대용량 페이지 및 AWE API를 사용하여 수행된 추적된 할당을 더한 프로세스 작업 집합(KB)입니다. |
large_page_allocations_kb |
bigint |
대용량 페이지 API를 사용하여 할당된 물리적 메모리입니다. |
locked_page_allocations_kb |
bigint |
AWE API를 사용하여 할당된 물리적 메모리입니다. |
total_virtual_address_space_kb |
bigint |
가상 주소 공간에서 사용자 모드 부분의 총 크기입니다. |
virtual_address_space_reserved_kb |
bigint |
물리적 페이지에 커밋 또는 매핑되지 않은 가상 주소 예약의 크기입니다. |
virtual_address_space_committed_kb |
bigint |
물리적 페이지에 커밋 또는 매핑된 가상 주소 크기입니다. |
virtual_address_space_available_kb |
bigint |
현재 사용 가능한 가상 주소 공간의 크기입니다. |
page_fault_count |
bigint |
SQL Server 프로세스에서 발생한 페이지 폴트 수입니다. |
memory_utilization_percentage |
int |
작업 집합에 있는 커밋된 메모리의 비율입니다. |
available_commit_limit_kb |
bigint |
프로세스에서 커밋할 수 있는 메모리의 크기입니다. |
process_physical_memory_low |
bit |
프로세스가 물리적 메모리 부족 알림에 응답합니다. |
process_virtual_memory_low |
bit |
가상 메모리 공간이 부족한 것으로 감지되었습니다. |
송 혁, SQL Server MVP
sqler.pe.kr // sqlleader.com
hyoksong.tistory.com // nexondbteam.tistory.com