2019. 9. 9. 13:58

SQL 서버 메모리 크기와 사용량 조회

SQL 서버 메모리의 크기와 사용량 조회

/* 메모리 문제 확인 */

select
system_high_memory_signal_state, /*값이 1이면 Windows에서 고용량 메모리 신호가 설정된 것입니다.*/
system_low_memory_signal_state, /*값이 1이면 Windows에서 저용량 메모리 신호가 설정된 것입니다.*/
system_memory_state_desc /* 메모리 상태 설명*/
from sys.dm_os_sys_memory

 이름데이터형식설명

total_physical_memory_kb

bigint

운영 체제에서 사용할 수 있는 실제 메모리의 총 크기(KB)입니다.

available_physical_memory_kb

bigint

사용할 수 있는 실제 메모리의 크기(KB)입니다.

total_page_file_kb

bigint

운영 체제에서 보고한 커밋 제한 크기(KB)입니다.

available_page_file_kb

bigint

사용 중이 아닌 페이지 파일의 총 공간(KB)입니다.

system_cache_kb

bigint

시스템 캐시 메모리의 총 공간(KB)입니다.

kernel_paged_pool_kb

bigint

페이징된 커널 풀의 총 공간(KB)입니다.

kernel_nonpaged_pool_kb

bigint

페이징되지 않은 커널 풀의 총 공간(KB)입니다.

system_high_memory_signal_state

bit

시스템 고용량 메모리 리소스 상태 알림입니다. 값이 1이면 Windows에서 고용량 메모리 신호가 설정된 것입니다. 자세한 내용은 MSDN 라이브러리의 CreateMemoryResourceNotification을 참조하십시오.

system_low_memory_signal_state

bit

시스템 저용량 메모리 리소스 상태 알림입니다. 값이 1이면 Windows에서 저용량 메모리 신호가 설정된 것입니다. 자세한 내용은 MSDN 라이브러리의 CreateMemoryResourceNotification을 참조하십시오.

system_memory_state_desc

nvarchar(256)

메모리 상태에 대한 설명입니다.

Available physical memory is low 이면 메모리 부족

 

/* 시스템 메모리 상태 보기 */
select
total_physical_memory_kb,   /*물리적 메모리 크기*/
available_physical_memory_kb, /*사용가능한 메모리 크기*/
total_page_file_kb,    /*전체 페이지 파일*/
available_page_file_kb,  /*사용가능한 페이지 파일*/
system_memory_state_desc  /*시스템 메모리 상태*/
from sys.dm_os_sys_memory

/*버퍼풀 상태 보기*/
select
physical_memory_in_bytes,  /*물리적 메모리 크기*/
virtual_memory_in_bytes,  /*가상 메모리 크기*/
bpool_committed,    /*현재 버퍼풀에 할당된 메모리 크기*/
bpool_commit_target,   /*버퍼풀이 최대로 할당할 수 있는 크기*/
bpool_visible     /*AWE 메모리를 매칭하고 있는 물리적 주소 공간*/
from sys.dm_os_sys_info

/*데이터베이스별 버퍼풀 사용공간 조회*/
select
DB_NAME(database_id) as database_name,
COUNT(*) as buffer_count,
CAST( count(*) as bigint )*8/1024.0 as [buffe_rsize(MB)]
from sys.dm_os_buffer_descriptors
where database_id <> 32767
group by DB_NAME(database_id),database_id
order by buffer_count desc

/*개채별 버퍼풀 사용공간 조회*/
select
OBJECT_NAME(p.object_id) as [object_name],
p.index_id,
COUNT(*) as buffer_count,
CAST( count(*) as bigint )*8/1024.0 as [buffe_rsize(MB)]
from sys.allocation_units as a
inner join sys.dm_os_buffer_descriptors as b
on a.allocation_unit_id =b.allocation_unit_id
inner join sys.partitions as p
on a.container_id=p.hobt_id
where b.database_id=DB_ID()
and p.[object_id]>100
group by p.[object_id],p.index_id
/*버퍼풀 이외의 공간 예측*/
select type,SUM(multi_pages_kb) as page_kb
from sys.dm_os_memory_clerks where multi_pages_kb!=0
group by type