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

 

  • 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
Notice SQL강좌: 챗GPT와 함께 배우는 SQL Server 무료 강좌 목차와 소개 (2023년 9월 업데이트) 코난(김대우) 2023.08.18 23408
Notice Python 무료 강좌 - 기초, 중급, 머신러닝(2023년 6월 업데이트) 코난(김대우) 2021.01.01 12412
1794 메모리 관리 아키텍처 – NUMA 지원 방법 jevida(강성욱) 2016.09.29 1611
1793 메모리 관리 아키텍처 – NUMA(Non-Uniform Memory Access)이해 jevida(강성욱) 2016.09.29 1489
1792 메모리 관리 아키텍처 – Hot Add 메모리 jevida(강성욱) 2016.09.28 961
1791 메모리 관리 아키텍처 – 버퍼 관리_페이지 쓰기 jevida(강성욱) 2016.09.28 1112
1790 메모리 관리 아키텍처 – 버퍼 관리_페이지 읽기 jevida(강성욱) 2016.09.28 1298
1789 메모리 관리 아키텍처 – 버퍼 관리 jevida(강성욱) 2016.09.28 1909
1788 메모리 관리 아키텍처 – Min/Max Server Memory 효과 jevida(강성욱) 2016.09.28 2624
» 메모리 관리 아키텍처 – 동적 메모리 관리 jevida(강성욱) 2016.09.28 1401
1786 메모리 관리 아키텍처 – 프로세스 주소 공간 jevida(강성욱) 2016.09.28 1407
1785 메모리 관리 아키텍처 – 메모리 아키텍처 jevida(강성욱) 2016.09.28 1933
1784 데이터 압축 상태에 대한 개체 크기 예상 jevida(강성욱) 2016.09.28 1410
1783 sp_MSforeachdb, sp_MSforeachtable 프로시저 활용하기 jevida(강성욱) 2016.09.28 3292
1782 SQL Server 쿼리 처리 아키텍처_분산 쿼리 아키텍처 jevida(강성욱) 2016.09.28 1193
1781 SQL Server 쿼리 처리 아키텍처_병렬 쿼리 처리 - 병렬 인덱스 작업 jevida(강성욱) 2016.09.28 1424
1780 SQL Server 쿼리 처리 아키텍처_병렬 쿼리 처리 - 병렬 처리 수준 jevida(강성욱) 2016.09.28 1948
1779 SQL Server 쿼리 처리 아키텍처_병렬 쿼리 처리 jevida(강성욱) 2016.09.28 1825
1778 SQL Server 쿼리 처리 아키텍처_실행 계획 캐싱 및 다시 사용 - Preparing SQL Statements jevida(강성욱) 2016.09.28 1056
1777 SQL Server 쿼리 처리 아키텍처_실행 계획 캐싱 및 다시 사용 - 강제 매개 변수화 jevida(강성욱) 2016.09.28 1047
1776 SQL Server 쿼리 처리 아키텍처_실행 계획 캐싱 및 다시 사용 - 단순 매개 변수화 jevida(강성욱) 2016.09.28 929
1775 SQL Server 쿼리 처리 아키텍처_실행 계획 캐싱 및 다시 사용 - 매개 변수 및 실행 계획 재사용 jevida(강성욱) 2016.09.28 1151





XE Login