동적 메모리 관리

Microsoft SQL Server 데이터베이스 엔진의 기본 메모리 관리 동작은 시스템에 메모리가 부족해지지 않도록 필요한 만큼 메모리를 확보하는 것입니다. 데이터베이스 엔진은 Microsoft 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 목표량 아래로 떨어집니다. SQL Server 인스턴스가 메모리 소비를 조정합니다. 다른 응용 프로그램이 중지되고 메모리를 더 사용할 수 있게 되면 SQL Server에서 메모리 할당 크기를 늘립니다. SQL Server는 매 초마다 몇 메가바이트의 메모리를 해제하고 확보하므로 변경된 메모리 할당에 맞도록 신속하게 조정할 수 있습니다.