데이터베이스 개발자 Tip & 강좌

SQLER의 개발자들이 만들어가는 데이터베이스 사용자 Tip & 강좌 게시판입니다. SQL서버, Oracle, MySQL 등 여러 클라우드/오픈소스 기반 데이터베이스 개발 및 운영 관련 팁과 쿼리 노하우를 이곳에서 가장 먼저 접하실 수 있습니다. 많은 도움 되시길 바랍니다.

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
1930 트랜잭션 백업 실패와 전체 백업 성공 그리고 대처 방안 jevida(강성욱) 2016.10.13 1540
1929 Fast recovery 와 로그 잠금 jevida(강성욱) 2016.10.13 2021
1928 고스트 클린업 jevida(강성욱) 2016.10.13 2245
1927 페이지 분할이 발생 하였을 때 롤백을 하면 어떻게 될까? jevida(강성욱) 2016.10.13 1639
1926 DBCC WRITEPAGE - DBCC 명령을 사용한 데이터 파괴하기 jevida(강성욱) 2016.10.13 1640
1925 SQL Server Backup Error 3023 jevida(강성욱) 2016.10.13 2248
1924 Delete 작업과 페이지 offset 변화 jevida(강성욱) 2016.10.13 1477
1923 트랜잭션 로그 및 LSN을 이용한 삭제된 데이터 복구 jevida(강성욱) 2016.10.13 5050
1922 PFX 형식의 인증서를 SQL Server에서 사용하기 jevida(강성욱) 2016.10.13 1149
1921 SQL Server NUMA 메모리 노드와 Operating System 접근 jevida(강성욱) 2016.10.13 1290
1920 SQL Server 에러 핸들링 비용 비교 jevida(강성욱) 2016.10.13 1302
1919 압축 백업 시 Checksum 옵션으로 손상 확인하기 jevida(강성욱) 2016.10.13 1633
1918 SQL Server 2012 Memory Manager 구성 jevida(강성욱) 2016.10.13 1263
1917 SQL Server Memory Manager 변화 jevida(강성욱) 2016.10.13 1480
1916 Ring_Buffer_Resource_Monitor jevida(강성욱) 2016.10.13 994
1915 SQL Server 프로파일러 템플릿 만들기 jevida(강성욱) 2016.10.13 1335
» SQL Server 메모리 병목 현상 식별 jevida(강성욱) 2016.10.13 1770
1913 SQL Server 시작 옵션 사용 jevida(강성욱) 2016.10.13 1787
1912 Ring buffer를 활용한 External Memory Pressure 확인 jevida(강성욱) 2016.10.12 1271
1911 Memory Pressure jevida(강성욱) 2016.10.12 1122





XE Login