SQL Server/SQL Server Tip

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

SungWookKang 2015. 7. 22. 10:01
반응형

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

 

  • 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

 

 

 

2013-05-29 / 강성욱 / http://sqlmvp.kr

 

 

반응형