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

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

메모리 관리 아키텍처 – 동적 메모리 관리

 

  • Version : SQL Server 2005, 2008, 2008R2

 

SQL Server 데이터베이스 엔진의 기본 메모리 관리 동작은 시스템에 메모리가 부족해지지 않도록 필요한 만큼 메모리를 확보하는 것이다. 데이터베이스 엔진은 Windows의 메모리 알림 API를 사용하여 이 작업을 수행 한다.

 

SQL Server의 가상 주소 공간은 버퍼풀이 차지하는 공간과 나머지 공간으로 고유하게 나눌 수 있다. AWE 메커니즘을 사용하면 버퍼 풀이 AWE 매핑된 메모리에 있을 수 있으며 데이터베이스 페이지를 위한 추가 공간을 제공 한다.

 

 

버퍼 풀은 SQL Server의 주 메모리 할당 소스로 사용된다. COM 개체 등 SQL Server 프로세스에 있으며 SQL Server 메모리 관리 기능을 인식하지 못하는 외부 구성 요소는 버퍼풀이 차지하는 가상 주소 공간 밖에 있는 메모리를 사용 한다.

 

 

SQL Server가 시작되면 시스템에 있는 실제 메모리 양 등 여러 매개변수, 서버 스레드 수 및 다양한 시작 매개변수를 기준으로 버퍼 풀의 가상 주소 공간 크기를 계산한다. SQL Server는 버퍼 풀에 사용할 해당 프로세스 가상 주소 공간 크기를 계산하여 예약하지만 현재 로드에 필요한 실제 메모리양만 확보 한다. 그런 다음 인스턴스가 작업을 지원하는데 필요한 메모리를 계속 확보 한다.

 

 

더 많은 사용자가 연결하여 쿼리를 실행하면 SQL Server에서 필요할 때 마다 실제 메모리를 더 확보 한다. SQL Server 인스턴스는 max server memory 할당 목표량에 도달하거나 Windows에서 더 이상 여유 메모리가 없다고 표시할 때까지 실제 메모리를 계속 확보 한다. min server memory 설정보다 메모리가 많거나 Windows에서 사용 가능한 메모리가 부족하다고 표시하면 메모리를 해제 한다.

 

대부분의 응용 프로그램들은 컴퓨터에서 시작 될 때 메모리를 소비하므로 사용 가능한 실제 메모리 양이 SQL Server 목표량 아래로 떨어질 수도 있다. 이때 SQL Server는 매 초마다 1MB 또는 최대 서버 메모리의 5%의 메모리를 해제하고 확보하는 작업을 하면서 변경된 메모리 할당에 맞도록 메모리 소비를 조정한다.

 

  • Server Memory Change Event Class :

http://msdn.microsoft.com/en-us/library/ms190684.aspx

 

 

[참고자료]

http://support.microsoft.com/kb/918483/ko

  • Server Memory Change Event Class :

http://msdn.microsoft.com/en-us/library/ms190684.aspx

 

 

 


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

No. Subject Author Date Views
1790 메모리 관리 아키텍처 – 버퍼 관리_페이지 읽기 jevida(강성욱) 2016.09.28 1250
1789 메모리 관리 아키텍처 – 버퍼 관리 jevida(강성욱) 2016.09.28 1788
1788 메모리 관리 아키텍처 – Min/Max Server Memory 효과 jevida(강성욱) 2016.09.28 2528
» 메모리 관리 아키텍처 – 동적 메모리 관리 jevida(강성욱) 2016.09.28 1361
1786 메모리 관리 아키텍처 – 프로세스 주소 공간 jevida(강성욱) 2016.09.28 1360
1785 메모리 관리 아키텍처 – 메모리 아키텍처 jevida(강성욱) 2016.09.28 1858
1784 데이터 압축 상태에 대한 개체 크기 예상 jevida(강성욱) 2016.09.28 1357
1783 sp_MSforeachdb, sp_MSforeachtable 프로시저 활용하기 jevida(강성욱) 2016.09.28 2830
1782 SQL Server 쿼리 처리 아키텍처_분산 쿼리 아키텍처 jevida(강성욱) 2016.09.28 1142
1781 SQL Server 쿼리 처리 아키텍처_병렬 쿼리 처리 - 병렬 인덱스 작업 jevida(강성욱) 2016.09.28 1335
1780 SQL Server 쿼리 처리 아키텍처_병렬 쿼리 처리 - 병렬 처리 수준 jevida(강성욱) 2016.09.28 1836
1779 SQL Server 쿼리 처리 아키텍처_병렬 쿼리 처리 jevida(강성욱) 2016.09.28 1746
1778 SQL Server 쿼리 처리 아키텍처_실행 계획 캐싱 및 다시 사용 - Preparing SQL Statements jevida(강성욱) 2016.09.28 1007
1777 SQL Server 쿼리 처리 아키텍처_실행 계획 캐싱 및 다시 사용 - 강제 매개 변수화 jevida(강성욱) 2016.09.28 994
1776 SQL Server 쿼리 처리 아키텍처_실행 계획 캐싱 및 다시 사용 - 단순 매개 변수화 jevida(강성욱) 2016.09.28 875
1775 SQL Server 쿼리 처리 아키텍처_실행 계획 캐싱 및 다시 사용 - 매개 변수 및 실행 계획 재사용 jevida(강성욱) 2016.09.28 1094
1774 SQL Server 쿼리 처리 아키텍처_실행 계획 캐싱 및 다시 사용 jevida(강성욱) 2016.09.28 1423
1773 DMV를 이용한 캐시된 저장 프로시저 통계 정보 확인 jevida(강성욱) 2016.09.28 978
1772 SQL Server 쿼리 처리 아키텍처_저장 프로시저 및 트리거 실행 jevida(강성욱) 2016.09.27 939
1771 SQL Server 쿼리 처리 아키텍처 _ SQL 문 처리 (4/4) – 분산형 분할 뷰(View) 확인 jevida(강성욱) 2016.09.27 1335





XE Login