2010. 8. 16. 16:46 DB 관련/Etc DB
SQL Server에 대한 AWE 메모리 활성화
이 기능은 다음 버전의 Microsoft SQL Server에서 제거됩니다. 새 개발 작업에서는 이 기능을 사용하지 말고, 현재 이 기능을 사용하는 응용 프로그램은 가능한 한 빨리 수정하십시오.
AWE(Address Windowing Extensions)를 사용하면 32비트 운영 체제에서 대량의 메모리에 액세스할 수 있습니다. AWE는 운영 체제에서 사용되며 구현 방식이 Microsoft Windows 2000 Server와 Windows Server 2003에서 약간의 차이가 있습니다. AWE는 awe enabled 옵션을 사용하여 설정됩니다.
Windows 2000에서 실행하는 Microsoft SQL Server 인스턴스는 SQL Server 시작 중에 다음 조건에 따라 메모리를 할당합니다.
- 사용 가능한 실제 메모리가 사용자 모드 가상 주소 공간보다 작은 경우 AWE를 활성화할 수 없습니다. 이 경우 SQL Server는 awe enabled 옵션 설정과 관계없이 AWE가 아닌 모드로 실행됩니다.
- 사용 가능한 실제 메모리가 사용자 모드 가상 주소 공간보다 크면 AWE를 활성화할 수 있습니다.
- 사용 가능한 실제 메모리가 max server memory 옵션의 값보다 클 경우 SQL Server 인스턴스는 max server memory에 지정된 만큼 메모리 양을 잠급니다.
- 사용 가능한 실제 메모리가 max server memory 옵션의 값보다 작거나 max server memory 옵션이 설정되지 않은 경우 SQL Server 인스턴스는 256MB를 제외한 모든 사용 가능 메모리를 잠급니다.
- 사용 가능한 실제 메모리가 max server memory 옵션의 값보다 클 경우 SQL Server 인스턴스는 max server memory에 지정된 만큼 메모리 양을 잠급니다.
- 할당된 후에는 SQL Server를 종료하기 전까지 AWE로 매핑된 메모리를 해제할 수 없습니다.
메모리 옵션 구성
AWE를 활성화할 때마다 max server memory 값을 설정하는 것이 좋습니다. awe enabled가 1로 설정되고 사용 가능한 실제 메모리가 사용자 모드 프로세스 공간보다 큰 경우, Windows 2000에서 실행되는 SQL Server 인스턴스는 서버를 시작할 때 사용 가능한 거의 모든 메모리(또는 max server memory 옵션이 설정된 경우 해당 값)를 잠급니다. max server memory가 설정되지 않은 경우 다른 응용 프로그램이나 SQL Server 인스턴스의 사용 가능한 실제 메모리는 128MB보다 작아집니다.
AWE로 매핑된 메모리 풀은 페이징 시스템 파일로 스와핑할 수 없습니다. 사용할 수 있는 실제 메모리가 더 필요한 경우 Windows는 다른 응용 프로그램을 스와핑해야 하며 이 때 이러한 응용 프로그램의 성능이 저하될 수 있습니다.
다른 응용 프로그램의 성능 저하를 방지하려면 추가 메모리 여유 공간을 남기도록 max server memory를 구성하여 다른 응용 프로그램 및 운영 체제의 다양한 요구에 부응할 수 있도록 하십시오. 컴퓨터에서 사용할 다른 응용 프로그램들을 모두 시작한 후에 사용할 수 있는 메모리 양을 파악하여 SQL Server 인스턴스에 안전하게 할당할 수 있는 메모리 양을 결정할 수 있습니다.
![]() |
---|
Windows 2000 Server의 경우 SQL Server AWE의 min server memory 설정이 무시됩니다. |
SQL Server 성능 모니터의 Total Server Memory (KB) 카운터를 사용하여 AWE 모드로 실행되는 SQL Server 인스턴스에서 할당할 메모리 크기를 결정하거나 sysperfinfo에서 메모리 사용량을 선택하십시오.
자세한 내용은 메모리 사용 모니터링을 참조하십시오.
AWE를 사용하는 여러 개의 SQL Server 인스턴스 실행
Windows 2000에서 서버를 실행 중인 경우 각 인스턴스에 max server memory 설정이 필요합니다. Windows 2000 운영 체제에서 실행하는 SQL Server는 AWE로 매핑된 메모리의 동적 할당을 지원하지 않으므로 각 인스턴스에 대해 max server memory 옵션을 설정하는 것이 좋습니다.
모든 인스턴스에 대한 max server memory 값의 합계가 컴퓨터의 총 실제 메모리보다 작아야 합니다. 합계가 총 실제 메모리보다 큰 경우 일부 인스턴스가 시작되지 않거나 max server memory 설정에 지정한 것보다 작은 메모리에 액세스하게 됩니다. 예를 들어 컴퓨터의 실제 메모리가 16GB이고 설치된 SQL Server 인스턴스가 3개라고 가정합니다. 또한 max server memory가 각 인스턴스에 대해 8GB로 설정되어 있습니다. 세 인스턴스를 모두 중지하고 다시 시작할 경우 메모리 할당은 다음과 같습니다.
- 첫 번째 인스턴스는 8GB의 실제 메모리에 액세스합니다.
- 두 번째 인스턴스는 8GB보다 약간(최대 128MB까지) 작은 실제 메모리에 액세스하여 시작됩니다.
- 세 번째 인스턴스는 동적 메모리 모드에서 시작되며 256MB 이하의 실제 메모리에 액세스합니다.
자세한 내용은 큰 데이터베이스의 메모리 관리를 참조하십시오.
SQL Server는 Windows Server 2003에서 AWE 메모리의 동적 할당을 지원합니다. SQL Server는 시작 과정에서 AWE로 매핑된 메모리의 일부만 예약합니다. AWE로 매핑된 추가 메모리가 필요한 경우 운영 체제에서 동적으로 메모리를 SQL Server에 할당합니다. 마찬가지로 적은 리소스만 필요한 경우 SQL Server에서는 다른 프로세스나 응용 프로그램에서 사용할 수 있도록 AWE 매핑된 메모리를 운영 체제로 반환합니다. awe enabled 구성 옵션에 대한 자세한 내용은 awe enabled 옵션을 참조하십시오.
Windows Server 2003 제품군부터 지원하는 실제 메모리 양이 증가했습니다. 따라서 AWE에서 액세스할 수 있는 실제 메모리 양은 사용 중인 운영 체제에 따라 달라집니다. 다음 목록에서는 작성 시점을 기준으로 각각의 Windows Server 2003 운영 체제가 액세스할 수 있는 최대 실제 메모리를 보여 줍니다.
- Windows Server 2003 Standard Edition에서는 실제 메모리를 4GB까지 지원합니다.
- Windows Server 2003 Enterprise Edition에서는 실제 메모리를 32GB까지 지원합니다.
- Windows Server 2003 Datacenter Edition에서는 실제 메모리를 64GB까지 지원합니다.
메모리 옵션 구성
SQL Server는 Windows Server 2003 운영 체제의 모든 버전에서 실행할 때 AWE로 매핑된 메모리를 동적으로 할당합니다. 따라서 버퍼 풀이 AWE로 매핑된 메모리를 동적으로 관리하여(min server memory 및 max server memory 옵션의 제약을 받음) 전체 시스템 요구 사항에 따라 SQL Server 메모리 사용량을 조절할 수 있습니다.
AWE가 설정되면 SQL Server는 항상 AWE로 매핑된 메모리를 사용하려고 시도합니다. 이는 응용 프로그램에 3GB 미만의 사용자 모드 주소 공간을 제공하도록 구성된 컴퓨터를 포함하여 모든 메모리 구성에 적용됩니다.
- Windows Server 2003에서 실행하는 SQL Server의 기본 메모리 모드로 AWE를 설정하는 것이 좋습니다. Hot Add 메모리 기능을 사용하려면 SQL Server 시작 과정에서 AWE를 설정해야 합니다. 자세한 내용은 Hot Add 메모리을 참조하십시오.
![]() |
---|
AWE는 필요하지 않으며 64비트 운영 체제에서 구성할 수 없습니다. |
- AWE로 매핑된 메모리는 3GB 미만까지만 지원되므로 min server memory 및 max server memory 값을 실제 메모리 범위 내에서 정의하거나 두 옵션의 기본값을 사용하십시오.
- 컴퓨터에서 실행되는 다른 응용 프로그램에 대한 추가 메모리를 보장하기 위해 SQL Server에 대한 max server memory를 설정할 수도 있습니다. SQL Server는 AWE로 매핑된 메모리를 동적으로 해제할 수 있지만 현재 할당된 AWE로 매핑된 메모리 양을 페이징 파일로 스와핑할 수는 없습니다.
SQL Server 인스턴스에서 AWE를 사용하려면 sp_configure를 사용하여 awe enabled 옵션을 1로 설정한 다음 SQL Server를 다시 시작하십시오.
min server memory와 max server memory에 대한 자세한 내용은 서버 메모리 옵션을 참조하십시오.
AWE를 설정하기 전에 Lock Pages in Memory 정책을 구성해야 합니다. 자세한 내용은 방법: Lock Pages in Memory 옵션 설정(Windows)을 참조하십시오.
예
다음 예에서는 AWE를 활성화하고 min server memory 제한을 1
GB로, max server memory 제한을 6
GB로 구성하는 방법을 보여 줍니다.
먼저 AWE를 구성합니다.
sp_configure 'show advanced options', 1 RECONFIGURE GO sp_configure 'awe enabled', 1 RECONFIGURE GO
SQL Server를 다시 시작한 후 SQL Server 오류 로그에 다음 메시지가 기록됩니다. "Address Windowing Extensions이 설정되어 있습니다."
다음으로 메모리를 구성합니다.
sp_configure 'min server memory', 1024 RECONFIGURE GO sp_configure 'max server memory', 6144 RECONFIGURE GO
이 예에서는 버퍼 풀이 AWE로 매핑된 메모리를 1GB에서 6GB 사이에서 동적으로 할당하도록 메모리를 설정합니다. 다른 응용 프로그램에 추가 메모리가 필요한 경우 SQL Server에서 필요하지 않은 AWE로 매핑된 할당 메모리를 해제할 수 있습니다. 이 예에서는 AWE로 매핑된 메모리를 최대 1GB까지만 해제할 수 있습니다.
Hot Add 메모리를 지원하는 컴퓨터에 메모리가 추가된 경우 SQL Server에서 동적 AWE 메모리를 통해 메모리를 늘릴 수도 있습니다. Windows Server 2003 3, Enterprise 및 Datacenter Edition에서 사용 가능한 Hot Add 메모리를 통해 컴퓨터를 실행하는 동안 메모리를 추가할 수 있습니다. 예를 들어 Windows Server 2003 Enterprise Edition에서 실행되는 SQL Server를 실제 메모리가 16GB인 컴퓨터에서 시작한다고 가정합니다. 운영 체제는 응용 프로그램의 가상 메모리 주소 공간을 2GB로 제한하도록 구성되고 SQL Server에서 AWE가 활성화됩니다. 이후 시스템 관리자가 컴퓨터를 실행하는 동안 16GB의 메모리를 추가하면 SQL Server는 즉시 추가 메모리를 인식하고 필요한 경우 이를 활용합니다.
AWE를 사용하는 방법은 Windows Server 2003 설명서를 참조하십시오.
AWE를 사용하는 여러 개의 SQL Server 인스턴스 실행
같은 컴퓨터에서 여러 개의 SQL Server 인스턴스를 실행 중이며 각 인스턴스가 AWE로 매핑된 메모리를 사용하는 경우 인스턴스가 예상대로 작동하는지 확인해야 합니다.
서버에서 Windows Server 2003을 실행하는 경우 각 인스턴스에 min server memory 설정이 필요합니다. Windows Server 2003에서 실행하는 SQL Server는 AWE로 매핑된 메모리의 동적 관리를 지원하므로 각 인스턴스에 대해 min server memory옵션을 설정하는 것이 좋습니다. AWE로 매핑된 메모리는 페이징 파일로 스와핑할 수 없으므로 모든 인스턴스에 대한 min server memory 값의 합계가 컴퓨터의 총 실제 메모리보다 작아야 합니다.
min server memory 옵션을 설정해도 SQL Server가 시작 시 최소 메모리를 확보하지는 않습니다. 메모리는 데이터베이스 작업을 기준으로 필요에 따라 할당됩니다. 그러나 min server memory 임계값에 도달한 후에는 SQL Server의 메모리 크기가 이보다 작은 경우 SQL Server가 메모리를 해제하지 않습니다. 각 인스턴스에 최소한 min server memory 값과 같은 메모리를 할당하기 위해 시작 직후 데이터베이스 서버 로드를 실행하는 것이 좋습니다. 일상적인 서버 작업 중에는 인스턴스별로 사용 가능한 메모리가 달라지지만 각 인스턴스에 설정된 min server memory 값보다 작아지지는 않습니다.
max server memory를 설정하거나 이 옵션의 기본 설정을 유지할 수 있습니다. max server memory를 기본값으로 유지하면 SQL Server 인스턴스 간 메모리 확보 경쟁이 생길 수 있습니다.
SQL Server 장애 조치 클러스터링 및 AWE 메모리를 사용할 경우 모든 인스턴스에 대한 max server memory 설정의 합계가 장애 조치 클러스터의 서버에서 사용 가능한 최소 실제 메모리보다 작은지 확인해야 합니다. 원본 노드보다 장애 조치 노드의 실제 메모리가 작으면 SQL Server 인스턴스를 시작할 수 없거나 원본 노드에서 가졌던 메모리보다 작은 메모리를 가지고 시작하게 됩니다.
이 기능은 다음 버전의 Microsoft SQL Server에서 제거됩니다. 새 개발 작업에서는 이 기능을 사용하지 말고, 현재 이 기능을 사용하는 응용 프로그램은 가능한 한 빨리 수정하십시오.
SQL Server에서는 많은 양의 실제 메모리를 지원하기 위해 Microsoft Windows AWE(Address Windowing Extensions) API를 사용합니다. SQL Server에서는 Microsoft Windows 2000 Server 및 Microsoft Windows Server 2003의 메모리를 최대 64GB까지 액세스할 수 있습니다.
![]() |
---|
AWE는 SQL Server Enterprise, Standard 및 Developer Edition에서만 지원되며 32비트 버전의 SQL Server에만 적용됩니다. Analysis Services에서는 AWE로 매핑된 메모리를 이용할 수 없습니다. 사용할 수 있는 실제 메모리가 사용자 모드 가상 주소 공간보다 적으면 AWE를 사용할 수 없습니다. |
표준 32비트 주소는 최대 4GB의 메모리를 매핑할 수 있습니다. 따라서 32비트 프로세스의 표준 주소 공간은 4GB로 제한됩니다. 기본적으로 32비트 Microsoft Windows 운영 체제에서 2GB는 운영 체제용으로 예약되고 2GB를 응용 프로그램에서 사용할 수 있습니다. Windows 2000 Advanced Server의 Boot.ini 파일에서 /3gb 매개 변수를 지정하면 운영 체제에서 주소 공간으로 1GB만 예약되므로 응용 프로그램은 최대 3GB까지 액세스할 수 있습니다. /3gb 매개 변수에 대한 자세한 내용은 프로세스 주소 공간을 참조하십시오.
AWE는 응용 프로그램에서 표준 32비트 주소 지정을 통해 사용할 수 있는 2-3GB보다 많은 메모리의 주소를 지정할 수 있도록 하는 Windows의 메모리 관리 기능에 대한 확장 집합입니다. AWE를 사용하면 응용 프로그램이 실제 메모리를 확보한 다음 페이지되지 않은 메모리의 뷰를 32비트 주소 공간에 동적으로 매핑할 수 있습니다. 32비트 주소 공간은 4GB로 제한되지만 비페이징 메모리는 훨씬 더 커질 수 있습니다. 이를 통해 대형 데이터베이스 시스템과 같이 메모리를 많이 사용하는 응용 프로그램은 32비트 주소 공간에서 지원될 수 있는 것보다 많은 메모리의 주소를 지정할 수 있습니다.
AWE를 사용하도록 운영 체제를 구성하기 전에 다음 사항을 고려하십시오.
- AWE를 사용하면 32비트 아키텍처에 4GB 이상의 실제 메모리를 할당할 수 있습니다. AWE는 사용 가능한 실제 메모리가 사용자 모드 가상 주소 공간보다 큰 경우에만 사용해야 합니다.
- 32비트 운영 체제에서 4GB 이상의 실제 메모리를 지원하려면 /pae 매개 변수를 Boot.ini 파일에 추가하고 컴퓨터를 다시 부팅해야 합니다. 자세한 내용은 Windows 설명서를 참조하십시오.
참고:
Windows Server 2003에서 PAE는 서버가 Hot Add 메모리 장치를 사용하는 경우에만 자동으로 설정됩니다. 이 경우 Hot Add 메모리 장치를 사용하도록 구성된 시스템에서 /pae 매개 변수를 사용하지 않아도 됩니다. 다른 모든 경우에서 4GB가 넘는 메모리를 이용하려면 Boot.ini 파일의 /pae 매개 변수를 사용해야 합니다. - 컴퓨터에서 16GB 이상의 실제 메모리를 사용할 수 있으면 운영 체제에 시스템용으로 2GB의 가상 주소 공간이 필요하므로 2GB의 사용자 모드 가상 주소 공간만 지원할 수 있습니다. 운영 체제에서 16GB를 초과하는 메모리 범위를 사용할 수 있도록 하려면 Boot.ini 파일에 /3gb 매개 변수가 포함되지 않아야 합니다. 이 매개 변수가 지정되어 있으면 운영 체제에서 16GB를 초과하는 실제 메모리를 사용할 수 없습니다.
![]() |
---|
SQL Server 버퍼 풀에서는 AWE로 매핑된 메모리를 모두 활용할 수 있지만 데이터베이스 페이지만 SQL Server의 가상 주소 공간에 동적으로 매핑하거나 매핑을 해제할 수 있으며 AWE를 통해 할당된 메모리를 완전히 활용할 수 있습니다. AWE는 가상 주소 공간에 영구적으로 존재하는 다른 개체, 추가 사용자, 스레드, 데이터베이스 및 쿼리를 직접 지원하지 않습니다. |
최대 서버 메모리 값 목록은 메모리 아키텍처의 표를 참조하십시오.
SQL Server는 큰 크기의 물리적 메모리를 지원하기 위해 AWE(Address Windowing Extensions) API를 사용합니다. SQL Server는 32비트 Microsoft Windows 운영 체제인 Microsoft Windows XP Professional; Windows 2000 Standard Edition; Windows 2000 Advanced Server; Windows 2000 Datacenter Server; Windows Server 2003, Enterprise Edition 또는 Windows Server 2003, Datacenter Edition에서 최대 64GB의 물리적 메모리를 지원합니다.
SQL Server는 Windows Server 2003 운영 체제의 모든 버전에서 실행할 때 AWE로 매핑된 메모리를 동적으로 할당합니다. 다시 말해 버퍼 풀이 AWE로 매핑된 메모리를 동적으로 관리하여 전체 시스템 요구 사항에 맞추어 SQL Server 메모리 사용을 조절할 수 있습니다.
AWE는 액세스 가능한 프로세스 주소 공간이 4GB로 제한되는 32비트 응용 프로그램의 한계를 해결합니다. 32비트 포인터는 4GB를 초과하는 메모리 주소를 가리킬 수 없습니다.
AWE를 사용하면 응용 프로그램은 비페이지 메모리로 운영 체제가 허용하는 최대 물리적 메모리를 직접 예약할 수 있습니다. 또한 SQL Server는 디스크의 시스템 페이징 파일에서 정보를 읽는 대신 더 많은 정보를 캐싱할 수 있습니다. 이로 인해 데이터 액세스가 더 빨라지고 디스크 액세스 빈도가 감소되어 성능이 점차 향상됩니다.
![]() |
---|
64비트 응용 프로그램은 메모리 액세스가 4GB로 제한되지 않기 때문에 AWE를 필요로 하지 않습니다. |
AWE API에 대한 자세한 내용을 보려면 MSDN 웹 사이트를 방문하여 "Address Windowing Extensions" 용어를 검색하십시오.
SQL Server에서 NUMA(Non-Uniform Memory Access)를 사용하는 방법은 NUMA(Non-Uniform Memory Access) 이해를 참조하십시오.