SQL Server 메모리 병목 현상 식별

 

  • Version : SQL Server 2005, 2008, 2008R2, 2012

 

SQL Server의 메모리 사용량을 확인하기 위해 DBCC MEMORYSTATUS 및 DMV를 사용할 수 있다.

 

[DBCC MEMORYSTATUS]

DBCC MEMORYSTATUS는 현재 메모리 상태의 스냅샷을 제공한다.

dbcc memorystatus

 

각 항목에 대한 정보는 다음 링크를 참고 한다.

 

 

[DMV]

동적관리뷰를 사용하여 메모리 할당에 대한 자세한 정보를 얻을 수 있다. DMV는 DBCC MEMORYSTATUS 명령과 유사한 데이터를 제공하지만 훨씬 더 많은 정보를 나타낸다.

 

다음 쿼리는 AWE 메커니즘을 통해 할당 한 SQL 메모리 양을 반환한다.

SELECT SUM(awe_allocated_kb) FROM sys.dm_os_memory_clerks

 

 

 

SQL Server 내부 클록 수동 제어는 캐시 사이즈와 관련있다. SQL 서버 외부 클럭 수동 이동은 메모리 부족을 가져온다. Sys.dm_os_memory_cache_clock_hand DMV를 사용하여 확인 할 수 있다. Rounts_count 및 removed_all_rounds_count 값이 증가하는 경우 서버는 메모리 압력을 받고 있다.

SELECT * FROM sys.dm_os_memory_cache_clock_hands WHERE rounds_count > 0

 

 

 

캐시에 대한 자세한 정보는 Sys.dm_os_cache_counters를 사용한다.

SELECT

distinct mcc.cache_address,

mcc.name,

mcc.type,

mcc.entries_count,

mcc.entries_in_use_count,

mcch.removed_all_rounds_count,

mcch.removed_last_round_count

FROM sys.dm_os_memory_cache_counters mcc

JOIN sys.dm_os_memory_cache_clock_hands mcch

ON (mcc.cache_address = mcch.cache_address)

 

 

 

가상 주소 공간의 정보는 sys.dm_os_virtual_address_dump DMV를 사용하여 추적 할 수 있다.

select * from sys.dm_os_virtual_address_dump

 

Sys.dm_os_memory_brokers는 내부 SQL server 메모리 관리자를 사용하여 메모리 할당에 대한 정보를 제공한다. 제공된 정보는 매우 큰 메모리 소비자를 결정하는데 유용할 수 있다.

select * from sys.dm_os_memory_brokers

 

 

 

Sys.dm_os_memory_nodes 및 sys.dm_os_memory_bode_access_stats은 메모리 노느당의 할당 정보와 페이지 유형별 메모리 노드의 접속 통계를 보여준다.

select * from sys.dm_os_memory_nodes

select * from sys.dm_os_memory_node_access_stats

 

 

 

CPU 구성에 대한 정보는 sys.dm_os_nodes로 확인 할 수 있따. 이 DMV는 소프트웨어 NUMA 구성을 반영한다.

select * from sys.dm_os_nodes

 

 

 

시스템 메모리 정보는 sys.dm_os_sys_memory를 사용한다. System_memory_state_desc 열에서 "Available physical memory is low" 값이 나타난다면 외부 메모리 압력이 있는 것이다.

 

select * from sys.dm_os_sys_memory

 

 

 

Sys.dm_os_ring_buffers에서도 메모리 정보를 확인할 수 있다. 각 링 버퍼는 마지막 알림을 기록 한다.

SELECT ring_buffer_type, COUNT(*) AS [Events]

FROM sys.dm_os_ring_buffers

GROUP BY ring_buffer_type

ORDER BY ring_buffer_type

 

 

  • RING_BUFFER_SCHEDULER_MONITOR : 서버의 전반적인 상태에 대한 정보를 저장. SystemHealth 기록은 1분 간격으로 작성 된다.
  • RING_BUFFER_RESOURCE_MONITOR : 리소스 모니터 알림을 사용하여 모든 메모리 상태 변경을 캡처 한다.
  • RING_BUFFER_OOM : 메모리 부족 상태를 나타내는 레코드가 포함되어 있다.
  • RING_BUFFER_MEMORY_BROKER : 리소스 관리자 리소스 풀에 의한 메모리 알림이 포함되어 있다.
  • RING_BUFFER_BUFFER_POOL : 버퍼 풀의 실패 기록이 포함되어 있다.

 

 

[참고자료]

  • How to Identify Microsoft SQL Server Memory Bottlenecks :

http://www.mssqltips.com/sqlservertip/2304/how-to-identify-microsoft-sql-server-memory-bottlenecks/

 

 



강성욱 / jevida@naver.com
Microsoft SQL Server MVP
Blog : http://sqlmvp.kr
Facebook : http://facebook.com/sqlmvp

No. Subject Author Date Views
Notice SQL강좌: 챗GPT와 함께 배우는 SQL Server 무료 강좌 목차와 소개 (2023년 9월 업데이트) 코난(김대우) 2023.08.18 1135
Notice Python 무료 강좌 - 기초, 중급, 머신러닝(2023년 6월 업데이트) 코난(김대우) 2021.01.01 1670
» SQL Server 메모리 병목 현상 식별 jevida(강성욱) 2016.10.13 1913
1913 SQL Server 시작 옵션 사용 jevida(강성욱) 2016.10.13 1909
1912 Ring buffer를 활용한 External Memory Pressure 확인 jevida(강성욱) 2016.10.12 1350
1911 Memory Pressure jevida(강성욱) 2016.10.12 1161
1910 64비트 버전의 SQL Server 버퍼 풀 메모리 페이지 수 줄이는 방법 jevida(강성욱) 2016.10.12 2728
1909 누락된 공유 잠금 (Missing Shared Locks) jevida(강성욱) 2016.10.12 1599
1908 Ad Hoc Distributed Queries 옵션 jevida(강성욱) 2016.10.12 3321
1907 높은 MAXDOP은 쿼리를 느리게 만들 수 있는가? jevida(강성욱) 2016.10.12 1383
1906 변경된 테이블 이름 복구하기 jevida(강성욱) 2016.10.12 1357
1905 Sys,dm_exec_connections jevida(강성욱) 2016.10.12 2053
1904 SQL Server 시작 매개 변수 설정 jevida(강성욱) 2016.10.12 2562
1903 AFTER 트리거를 INSTEAD OF 트리거로 변경 후 효율성 향상 jevida(강성욱) 2016.10.12 1964
1902 쿼리 대기 옵션 jevida(강성욱) 2016.10.12 1616
1901 Index create memory 설정 jevida(강성욱) 2016.10.12 1304
1900 Min memory per query 옵션 jevida(강성욱) 2016.10.12 1779
1899 SQL Server 에디션 다운그레이드와 제한된 기능 확인 jevida(강성욱) 2016.10.12 2163
1898 Downgrade from SQL Server Ent to Std Edition jevida(강성욱) 2016.10.12 1369
1897 트랜잭션 로그 여유 공간 모니터링 jevida(강성욱) 2016.10.12 1421
1896 SQL Server가 서비스 격리를 처리하는 방법 jevida(강성욱) 2016.10.12 1173
1895 쿼리 매개변수화 확인하기 jevida(강성욱) 2016.10.12 1472





XE Login