본문 바로가기
mssql

mssql 메모리 제한 설정

by [김경민]™ ┌(  ̄∇ ̄)┘™ 2013. 4. 30.
728x90

[출처] http://msdn.microsoft.com/ko-kr/library/ms178067.aspx


서버 메모리 서버 구성 옵션

SQL Server 2012
이 항목은 아직 평가되지 않았습니다.이 항목 평가

min server memory 및 max server memory의 두 가지 서버 메모리 옵션을 사용하여 SQL Server 인스턴스에서 사용하는 SQL Server 프로세스의 메모리 양(MB)을 다시 구성할 수 있습니다. 이 메모리는 SQL Server Memory Manager가 관리합니다.

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

참고 참고

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

SQL Server가 동적으로 메모리를 사용하면 주기적으로 시스템을 쿼리하여 사용할 수 있는 메모리 양을 확인합니다. 사용 가능한 메모리를 이 수준으로 유지 관리하면 OS(운영 체제)에서 페이징을 방지합니다. 사용 가능한 메모리가 이보다 적은 경우 SQL Server는 메모리를 OS로 해제합니다. 사용 가능한 메모리가 이보다 많은 경우 SQL Server는 추가 메모리를 할당합니다. SQL Server는 작업에 메모리가 많이 필요한 경우에만 메모리를 추가합니다. 유휴 상태의 서버는 가상 주소 공간의 크기를 증가시키지 않습니다.

SQL Server는 메모리 알림 API QueryMemoryResourceNotification을 사용하여 SQL Server Memory Manager가 메모리를 할당하고 해제하는 시기를 결정합니다.

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

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

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

참고 참고

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

OS 유형

max server memory에 지정할 수 있는 최소 메모리 양

32비트

64MB

64비트

128MB

min server memory 및 max server memory의 두 가지 서버 메모리 옵션을 사용하여 SQL Server Memory Manager가 관리하는 SQL Server 인스턴스의 메모리 양(MB)을 다시 구성할 수 있습니다. 기본적으로 SQL Server는 사용할 수 있는 시스템 리소스에 따라 메모리 요구 사항을 동적으로 변경할 수 있습니다.

고정 메모리 양을 구성하는 절차

고정 메모리 크기를 설정하려면

  1. 개체 탐색기에서 서버를 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다.

  2. 메모리 노드를 클릭합니다.

  3. 서버 메모리 옵션에서 원하는 최소 서버 메모리 및 최대 서버 메모리 양을 입력합니다.

    기본 설정을 사용하면 SQL Server가 사용할 수 있는 시스템 리소스에 따라 메모리 요구 사항을 동적으로 변경할 수 있습니다. 최소 서버 메모리의 기본 설정은 0이며 최대 서버 메모리의 기본 설정은 2147483647MB입니다.

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

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

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

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

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

이 Windows 정책은 데이터를 실제 메모리에 유지하는 프로세스를 사용하여 시스템이 디스크의 가상 메모리로 데이터를 페이징하지 않도록 방지할 수 있는 계정을 결정합니다. 메모리의 페이지를 잠그면 메모리를 디스크로 페이징할 때 서버가 계속해서 응답합니다. sqlservr.exe 실행 권한이 있는 계정에 Windows LPIM("메모리의 페이지 잠금") 사용자 권한이 부여된 경우 SQL Server 2012 Standard 이상 버전의 32비트 및 64비트 인스턴스에서 SQL Server 메모리의 페이지 잠금 옵션은 ON으로 설정됩니다. 이전 버전의 SQL Server에서는 SQL Server의 32비트 인스턴스에 대한 페이지 잠금 옵션을 설정하려면 sqlservr.exe 실행 권한이 있는 계정에 LPIM 사용자 권한이 있고 'awe_enabled' 구성 옵션을 ON으로 설정해야 합니다.

SQL Server에 대해 메모리의 페이지 잠금 옵션을 사용하지 않도록 설정하려면 SQL Server 시작 계정에 대해 "메모리의 페이지 잠금" 사용자 권한을 제거합니다.

메모리의 페이지 잠금을 사용하지 않도록 설정하려면

메모리의 페이지 잠금 옵션을 사용하지 않도록 설정하려면

  1. 시작 메뉴에서 실행을 클릭합니다. 열기 상자에 gpedit.msc를 입력합니다.

    그룹 정책 대화 상자가 열립니다.

  2. 그룹 정책 콘솔에서 컴퓨터 구성을 확장한 다음 Windows 설정을 확장합니다.

  3. 보안 설정을 확장한 다음 로컬 정책을 확장합니다.

  4. 사용자 권한 할당 폴더를 선택합니다.

    세부 정보 창에 정책이 표시됩니다.

  5. 세부 정보 창에서 메모리의 페이지 잠그기를 두 번 클릭합니다.

  6. 로컬 보안 정책 설정 대화 상자에서 sqlservr.exe 실행 권한이 있는 계정을 선택하고 제거를 클릭합니다.

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

주소 공간의 커밋된 영역은 Windows 가상 메모리 관리자(VMM)에 의해 사용할 수 있는 실제 메모리에 매핑됩니다.

운영 체제별 지원되는 실제 메모리의 양에 대한 자세한 내용은 Windows 설명서 "Windows 릴리스별 메모리 제한(Memory Limits for Windows Releases)"을 참조하십시오.

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

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

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

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

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

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

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

32비트

64비트

기본 메모리

모든 SQL Server 버전에서 프로세스 가상 주소 공간 제한까지 허용됩니다.

  • 2GB

  • 3GB(/3gb 부트 매개 변수1 사용)

  • 4GB(WOW642 사용)

모든 SQL Server 버전에서 프로세스 가상 주소 공간 제한까지 허용됩니다.

  • 8TB(x64 아키텍처 사용)

1 /3gb는 운영 체제 부트 매개 변수입니다. 자세한 내용은 MSDN 라이브러리를 참조하십시오.

2 WOW64(Windows on Windows 64)는 32비트 SQL Server가 64비트 운영 체제에서 실행되는 모드입니다. 자세한 내용은 MSDN 라이브러리를 참조하십시오.

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

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

728x90

댓글