서버 메모리 옵션

min server memorymax server memory의 두 가지 서버 메모리 옵션을 사용하여 Microsoft SQL Server 인스턴스에서 사용하는 버퍼 풀의 메모리 양(MB)을 다시 구성할 수 있습니다.

기본적으로 SQL Server는 사용할 수 있는 시스템 리소스에 따라 메모리 요구 사항을 동적으로 변경할 수 있습니다. min server memory의 기본 설정은 0이고, max server memory의 기본 설정은 2147483647입니다. max server memory에 지정할 수 있는 최소 메모리 양은 16메가바이트(MB)입니다.

[!참고]

max server memory를 최소값으로 설정하면 SQL Server 성능이 심각하게 손상되며 SQL Server를 시작하지 못할 수도 있습니다. 이 옵션을 변경한 후 SQL Server를 시작할 수 없으면 –f 시작 옵션을 사용하여 SQL Server를 시작하고 max server memory를 이전 값으로 다시 설정합니다. 자세한 내용은 SQL Server 서비스 시작 옵션 사용을 참조하십시오.

SQL Server는 메모리를 동적으로 사용하는 경우 실제 메모리 여유 공간을 확인하기 위해 정기적으로 시스템을 쿼리합니다. SQL Server는 메모리 알림 API인 QueryMemoryResourceNotification을 사용하여 버퍼 풀에서 메모리를 할당 및 해제할 수 있는 시기를 결정합니다.

SQL Server에서 메모리를 동적으로 사용할 수 있게 하는 것이 좋지만 메모리 옵션을 수동으로 설정하고 SQL Server에서 액세스할 수 있는 메모리 양을 제한할 수 있습니다. SQL Server의 메모리 크기를 설정하기 전에 총 실제 메모리에서 운영 체제에 필요한 메모리, 다른 SQL Server 인스턴스에 필요한 메모리 및 다른 시스템이 사용하는 메모리(컴퓨터가 SQL Server 전용이 아닌 경우)를 빼서 적절한 메모리 설정을 결정하십시오. 이러한 차이 값이 SQL Server에 할당할 수 있는 최대 메모리 양입니다.

메모리 옵션 수동 설정

min server memorymax server memory를 설정하여 메모리 값 범위를 확장합니다. 이 방법은 시스템 또는 데이터베이스 관리자가 같은 컴퓨터에서 실행 중인 다른 응용 프로그램의 메모리 요구 사항과 관련하여 SQL Server 인스턴스를 구성하는 경우 유용합니다.

min server memory를 사용하여 SQL Server 인스턴스의 버퍼 풀에 사용 가능한 최소 메모리 양을 보장합니다. SQL Server에서는 시작 시 min server memory에 지정된 메모리 양을 즉시 할당하지 않습니다. 그러나 클라이언트 로드 때문에 메모리 사용량이 이 값에 도달하면 min server memory 값을 줄이기 전에는 SQL Server가 할당된 버퍼 풀에서 메모리를 비울 수 없습니다.

[!참고]

SQL Server에서는 min server memory에 지정된 메모리 양을 할당하는 것은 보장하지 않습니다. 서버의 로드 때문에 min server memory에 지정된 메모리 양을 할당할 필요가 없는 경우 SQL Server는 보다 적은 메모리로 실행됩니다.

max server memory를 사용하면 SQL Server 버퍼 풀이 지정된 양 이상의 메모리를 사용하지 못하게 되므로 나머지 메모리를 다른 응용 프로그램을 빨리 시작하는 데 사용할 수 있습니다. SQL Server는 시작할 때 max server memory에서 지정된 메모리를 즉시 할당하지 않습니다. 메모리 사용은 SQL Server에서 필요한 만큼 max server memory에 지정된 값에 도달할 때까지 증가됩니다. SQL Server에서는 max server memory 값을 늘리기 전에는 이 메모리 사용량을 초과할 수 없습니다.

max server memory 값을 줄이기 전에 성능 모니터를 사용하여 부하 상태에서 SQLServer:Buffer Manager 성능 개체를 검사하고 Stolen pagesReserved pages 카운터의 현재 값을 확인합니다. 이러한 카운터는 8K 페이지 수로 메모리를 보고합니다. 메모리 부족 오류를 방지하려면 max server memory를 두 값의 합계보다 크도록 설정해야 합니다. 가장 낮은 적절한 max server memory 설정(MB)은 ([Stolen pages] + [Reserved pages])/ 100입니다. max server memory를 줄이려면 SQL Server를 다시 시작하여 메모리를 해제해야 할 수도 있습니다. 메모리 옵션을 설정하는 방법은 방법: 고정된 메모리 양 설정(SQL Server Management Studio)을 참조하십시오.

네트워크 응용 프로그램을 위해 데이터 처리량 최대화

SQL Server의 시스템 메모리 사용을 최대화하려면 시스템에서 파일 캐싱용으로 사용되는 메모리 용량을 제한해야 합니다. 파일 시스템 캐시를 제한하려면 파일 공유를 위해 데이터 처리량 최대화의 선택을 취소합니다. 사용 메모리 최소화 또는 균형을 선택하여 최소 파일 시스템 캐시를 지정할 수 있습니다.

운영 체제의 현재 설정을 확인하려면

  1. 시작, 제어판을 차례로 클릭한 다음 네트워크 연결, 로컬 영역 연결을 차례로 두 번 클릭합니다.

  2. 일반 탭에서 속성을 클릭하고 Microsoft 네트워크용 파일 및 프린터 공유를 선택한 다음 속성을 클릭합니다.

  3. 네트워크 응용 프로그램을 위해 데이터 처리량 최대화가 선택된 경우에는 다른 옵션을 선택하고 확인을 클릭한 다음 나머지 대화 상자를 닫습니다.

Windows Server 2003의 AWE 메모리

Windows Server 2003에서 SQL Server는 운영 체제의 메모리 요구 사항과 자체 메모리 요구 사항 간의 부하 분산을 조정하는 데 유용한 AWE(Address Windowing Extensions) 메모리를 사용할 수 있습니다. SQL Server 및 운영 체제 간의 균형 조정은 min server memorymax server memory 옵션의 제약 조건에 따라 다릅니다. 서버 하드웨어에서 Hot-Add 메모리를 지원하는 경우 시스템을 다시 시작할 필요 없이 필요한 만큼 실제 메모리를 서버에 추가할 수 있습니다. awe enabled 구성 옵션에 대한 자세한 내용은 awe enabled 옵션을 참조하십시오. 자세한 내용은 Hot Add 메모리를 참조하십시오.

[!참고]

동적 AWE 메모리는 구성된 가상 메모리 제한보다 실제 메모리가 적은 서버에서 지원됩니다.

시스템에서 페이지가 디스크로 스왑되지 않는 범위 내에서 SQL Server에 가능한 한 많은 양의 메모리를 할당하는 것이 이상적입니다. 임계값은 시스템에 따라 달라집니다. 예를 들어 SQL Server 전용 32GB 시스템에서는 30-31GB가 SQL Server에 적절한 최대 임계값이고 64GB 시스템에서는 60-62GB가 적절한 임계값이 될 수 있습니다.

[!참고]

SQL Server 메모리 양을 늘리면 추가 메모리를 수용하기 위해 운영 체제의 가상 메모리 지원 파일(Pagefile.sys)을 확장할 수 있을 만큼 디스크 공간이 충분한지 확인해야 합니다. 가상 메모리 지원 파일에 대한 자세한 내용은 Windows 설명서를 참조하십시오.

Windows 시스템 모니터의 통계를 사용하여 필요한 경우 메모리 값을 조정할 수 있습니다. 이 값은 메모리를 추가 또는 제거하거나 시스템 사용 방법을 변경할 때만 변경하십시오.

가상 메모리 관리자

32비트 운영 체제는 4GB의 가상 주소 공간에 대한 액세스를 제공합니다. 2GB의 가상 메모리는 프로세스 전용이며 응용 프로그램에서 사용 가능합니다. 2GB는 운영 체제용으로 예약되어 있습니다. 모든 운영 체제 버전에는 최대 3GB의 가상 메모리에 대한 액세스를 응용 프로그램에 제공할 수 있는 스위치가 포함되어 있습니다. 이 경우 운영 체제는 1GB로 제한됩니다. 스위치 메모리 구성을 사용하는 방법은 4GT(4GB 튜닝)에 대한 Windows 설명서를 참조하십시오. 32비트 SQL Server가 64비트 운영 체제에서 실행되는 경우 사용자가 사용할 수 있는 가상 주소 공간은 전체 4GB입니다.

[!참고]

PAE는 서버가 Hot Add 메모리 장치를 사용하는 경우에만 자동으로 설정됩니다. 이 경우 Hot Add 메모리 장치를 사용하도록 구성된 시스템에서 /PAE 스위치를 사용하지 않아도 됩니다. 다른 모든 경우에서 4GB가 넘는 메모리를 이용하려면 Boot.ini 파일의 /PAE 스위치를 사용해야 합니다.

4GB 주소 공간은 Windows VMM(가상 메모리 관리자)에 의해 사용할 수 있는 실제 메모리에 매핑됩니다. 따라서 AWE에서 액세스할 수 있는 실제 메모리 용량은 사용 중인 운영 체제에 따라 달라집니다. 여러 운영 체제에서 지원하는 실제 메모리 크기에 대한 자세한 내용은 Windows 설명서 "Windows 릴리스별 메모리 제한"을 참조하십시오.

가상 주소 시스템에서는 실제 메모리의 과다 커밋이 허용되므로 가상 메모리와 실제 메모리의 비율이 1:1을 초과할 수 있습니다. 그 결과 실제 메모리가 다양하게 구성된 컴퓨터에서 대용량 프로그램을 실행할 수 있습니다. 그러나 모든 프로세스의 현재 평균 설정을 합한 값보다 너무 많은 가상 메모리를 사용하면 성능이 떨어질 수 있습니다.

min server memorymax server memory는 고급 옵션입니다. sp_configure 시스템 저장 프로시저를 사용하여 이러한 설정을 변경할 경우 show advanced options를 1로 설정해야만 변경할 수 있습니다. 이러한 설정은 서버를 다시 시작하지 않아도 즉시 적용됩니다.

여러 SQL Server 인스턴스 실행

여러 데이터베이스 엔진 인스턴스를 실행하는 경우 다음 3가지 방법으로 메모리를 관리할 수 있습니다.

  • max server memory를 사용하여 메모리 사용을 제어합니다. 허용되는 총 메모리가 컴퓨터의 실제 메모리 합계보다 크지 않도록 주의하여 각 인스턴스의 최대값을 설정합니다. 예상 작업이나 데이터베이스 크기에 비례하여 각 인스턴스에 메모리를 제공할 수 있습니다. 이 방법은 새 프로세스나 인스턴스 시작 시 여유 메모리를 즉시 사용할 수 있다는 장점이 있습니다. 단점은 모든 인스턴스를 실행하지 않는 경우 실행 중인 인스턴스가 남은 여유 메모리를 사용할 수 없다는 것입니다.

  • min server memory를 사용하여 메모리 사용을 제어합니다. 최소값의 합계가 컴퓨터의 실제 메모리 합계보다 1-2GB 작도록 각 인스턴스의 최소값을 설정합니다. 또한 해당 인스턴스의 예상 부하에 비례하여 이러한 최소값을 설정할 수 있습니다. 이 방법은 모든 인스턴스를 동시에 실행하지 않는 경우 실행 중인 인스턴스에서 남은 여유 메모리를 사용할 수 있다는 장점이 있습니다. 또한 이 방법은 SQL Server에 적절한 양의 메모리가 최소한 할당되도록 하기 때문에 컴퓨터에 메모리를 많이 사용하는 다른 프로세스가 있을 때 유용합니다. 단점은 새 인스턴스나 다른 프로세스 시작 시, 특히 메모리를 해제하기 위해 수정된 페이지를 다시 데이터베이스에 써야 하는 경우 실행 중인 인스턴스가 메모리를 해제하는 데 오랜 시간이 걸린다는 것입니다. 페이징 파일의 크기를 훨씬 늘려야 할 수도 있습니다.

  • 아무 작업도 하지 않습니다(권장되지 않음). 작업이 제공되는 첫 번째 인스턴스에서 모든 메모리를 할당합니다. 유휴 인스턴스나 나중에 시작된 인스턴스는 사용 가능한 최소 메모리만으로는 실행되지 않을 수도 있습니다. SQL Server에서는 인스턴스간 메모리 사용을 조절하지 않습니다. 그러나 모든 인스턴스는 Windows 메모리 알림 신호에 응답하여 버퍼 풀의 크기를 조절합니다. Windows는 메모리 알림 API로 응용 프로그램 간 메모리 균형을 유지하는 것이 아니라 단순히 시스템의 메모리 사용 가능 여부에 대한 전역 피드백만 제공합니다.

인스턴스를 다시 시작하지 않고 이러한 설정을 변경할 수 있으므로 사용 패턴에 가장 맞는 설정을 쉽게 찾을 수 있습니다.

다음 예에서는 max server memory 옵션을 4GB로 설정합니다.

sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'max server memory', 4096;
GO
RECONFIGURE;
GO