메모리 아키텍처
MicrosoftSQL Server에서는 메모리를 필요에 따라 동적으로 확보하고 해제합니다. 일반적으로 관리자는 SQL Server에 할당해야 하는 메모리의 양을 지정할 필요가 없습니다. 해당 옵션이 계속 유지되고 일부 환경에서는 필요할 경우에도 마찬가지입니다.
SQL Server는 32비트 버전의 Microsoft Windows 운영 체제에서 실제 메모리를 4GB 이상 사용할 수 있도록 하는 AWE(Address Windowing Extensions)를 지원합니다. 최대 64GB의 실제 메모리가 지원됩니다. MicrosoftWindows 2000에서 실행되는 SQL Server 인스턴스는 정적 AWE 메모리 할당을 사용하고 MicrosoftWindows Server 2003에서 실행되는 인스턴스는 동적 AWE 메모리 할당을 사용합니다.
[!참고]
AWE는 SQL Server Enterprise, Standard 및 Developer 버전에서만 지원되며 32비트 운영 체제에만 적용됩니다. Analysis Services에서는 AWE로 매핑된 메모리를 이용할 수 없습니다. 사용할 수 있는 실제 메모리가 사용자 모드 가상 주소 공간보다 적으면 AWE를 사용할 수 없습니다.
디스크 읽기 및 쓰기는 리소스를 가장 많이 사용하는 작업에서 발생하므로 모든 데이터베이스 소프트웨어 디자인의 기본 목표 중 하나는 디스크 입/출력을 최소화하는 것입니다. SQL Server는 메모리에 버퍼 풀을 작성하여 데이터베이스에서 읽은 페이지를 유지합니다. SQL Server의 코드 중 많은 부분이 디스크와 버퍼 풀 간의 실제 읽기 및 쓰기 수를 최소화하기 위한 것입니다. SQL Server는 다음 두 목표 간의 균형을 유지하려고 합니다.
전체 시스템의 메모리가 부족해지지 않도록 적정한 수준의 버퍼 풀 크기 유지
버퍼 풀의 크기를 최대화하여 데이터베이스 파일에 대한 실제 입출력 최소화
자세한 내용은 버퍼 관리를 참조하십시오.
기본적으로 SQL Server 2005 버전은 각 인스턴스의 메모리를 동적으로 관리합니다. Windows 2000 이후 버전의 운영 체제에서 SQL Server가 AWE로 매핑된 메모리를 관리하는 방식에 차이가 있습니다.
[!참고]
사용량이 많은 시스템에서는 많은 메모리가 필요한 일부 대규모 쿼리를 실행하는 경우 요청한 최소 메모리 용량을 얻지 못하고 메모리 리소스를 대기하는 동안 시간 초과 오류가 발생하게 됩니다. 이 문제를 해결하려면 query wait 옵션을 늘립니다. 병렬 쿼리의 경우 max degree of parallelism 옵션을 줄여 보십시오.
[!참고]
사용량이 많고 메모리가 부족한 시스템에서는 쿼리가 비트맵에 필요한 최소 메모리를 얻지 못할 경우 쿼리 계획에 병합 조인, 정렬 및 비트맵이 포함된 쿼리에서 비트맵을 삭제할 수 있습니다. 이 경우 쿼리 성능에 영향을 줄 수 있으며 정렬 프로세스가 메모리에 들어가지 않을 경우 tempdb 데이터베이스의 작업 테이블 사용이 증가하여 tempdb가 확장될 수 있습니다. 이 문제를 해결하려면 실제 메모리를 추가하거나 더 빠른 다른 쿼리 계획을 사용하도록 쿼리를 튜닝합니다. 튜닝에 대한 자세한 내용은 tempdb 성능 최적화 및 방법: 데이터베이스 튜닝을 참조하십시오.
SQL Server에 최대 메모리 양 제공
AWE와 Lock Pages in Memory 권한을 사용하면 SQL Server 데이터베이스 엔진에 다음과 같이 메모리 양을 제공할 수 있습니다.
32비트 |
64비트 |
|
---|---|---|
기본 메모리 |
모든 SQL Server 버전: 프로세스 가상 주소 공간 제한까지 허용됩니다.
|
모든 SQL Server 버전: 프로세스 가상 주소 공간 제한까지 허용됩니다.
참고
Windows Server 2003의 제한은 512GB이고 Windows Server 2003 서비스 팩 1의 제한은 1TB입니다. Windows에서 추가 메모리를 지원할 경우 SQL Server는 나열된 제한에 도달할 수 있습니다.
|
AWE 메커니즘(SQL Server에서 32비트 플랫폼의 프로세스 가상 주소 공간 제한을 초과할 수 있도록 허용) |
SQL Server Standard, Enterprise 및 Developer 버전: 버퍼 풀이 최대 64GB의 메모리에 액세스할 수 있습니다. |
해당 사항 없음3 |
Lock pages in memory 운영 체제(OS) 권한(실제 메모리 잠금을 허용하여 잠긴 메모리의 OS 페이징 방지)4 |
SQL Server Standard, Enterprise 및 Developer 버전: SQL Server 프로세스에서 AWE 메커니즘을 사용하는 데 필요합니다. AWE 메커니즘을 통해 할당된 메모리는 페이징할 수 없습니다. AWE를 사용하지 않고 이 권한을 부여하면 서버에 영향을 주지 않습니다. |
SQL Server Enterprise 및 Developer 버전: 운영 체제 페이징을 방지하기 위해 권장됩니다. 작업에 따라 성능이 향상될 수 있습니다. 액세스할 수 있는 메모리 양은 기본 메모리의 경우와 유사합니다. |
1**/3gb**는 운영 체제 부트 매개 변수입니다. 자세한 내용은 MSDN 라이브러리를 참조하십시오.
2 WOW64(Windows on Windows 64)는 32비트 SQL Server가 64비트 운영 체제에서 실행되는 모드입니다. 자세한 내용은 MSDN 라이브러리를 참조하십시오.
3sp_configureawe enabled 옵션은 64비트 SQL Server에 있지만 무시됩니다. 64비트 SQL Server의 이후 릴리스나 서비스 팩에서 제거될 수 있습니다.
4 32비트에서 AWE 지원에 대해 또는 64비트에서 단독으로 lock pages in memory 권한이 부여된 경우 max server memory도 설정하는 것이 좋습니다. 자세한 내용은 서버 메모리 옵션을 참조하십시오.