메모리 구성 옵션을 사용하여 서버 성능 최적화

Microsoft SQL Server에는 메모리 관리자 구성 요소가 있기 때문에 SQL Server에서 사용할 수 있는 메모리를 수동으로 관리할 필요가 없습니다. SQL Server를 시작하면 이 구성 요소가 운영 체제와 다른 응용 프로그램에서 현재 사용하고 있는 메모리 크기를 고려하여 할당할 메모리 양을 동적으로 결정합니다. 컴퓨터와 SQL Server의 사용량이 변경됨에 따라 할당되는 메모리도 달라집니다. 자세한 내용은 메모리 아키텍처를 참조하십시오.

다음은 메모리 사용량을 구성하고 서버 성능에 영향을 주기 위해 사용할 수 있는 서버 구성 옵션입니다.

  • min server memory

  • max server memory

  • max worker threads

  • index create memory

  • min memory per query

SQL Server에서 임계값에 도달한 후 구성된 최소 서버 메모리 이하로 메모리를 해제하지 않도록 하기 위해 min server memory 서버 구성 요소 옵션을 사용할 수 있습니다. SQL Server의 크기와 동작을 기반으로 이 구성 옵션을 특정 값으로 설정할 수 있습니다. 이 값을 설정할 경우에는 적당한 값으로 설정하여 운영 체제에서 SQL Server에 너무 많은 메모리를 요구하여 SQL Server 성능에 영향을 주는 일이 없도록 합니다.

SQL Server가 시작될 때와 실행 중일 때 할당할 수 있는 최대 메모리 양을 지정하기 위해 maxservermemory 서버 구성 옵션을 사용할 수 있습니다. SQL Server와 동시에 실행되는 응용 프로그램이 여러 개 있는 것을 아는 경우, 이러한 응용 프로그램이 충분한 메모리를 사용하여 실행되도록 하려면 이 구성 옵션을 특정 값으로 설정할 수 있습니다. SQL Server는 필요할 때마다 메모리를 해제하므로 웹 또는 전자 메일 서버와 같은 다른 응용 프로그램에서 필요할 때만 메모리를 요청하는 경우에는 maxservermemory 서버 구성 옵션을 설정하지 마십시오. 그러나 응용 프로그램에서는 시작할 때 사용할 수 있는 모든 메모리를 사용하고, 필요할 때 더 요청하지 않는 경우가 많습니다. 이런 방식으로 동작하는 응용 프로그램이 SQL Server와 동시에 같은 컴퓨터에서 실행되는 경우에는 응용 프로그램에 필요한 메모리를 SQL Server가 할당하지 않도록 maxservermemory 서버 구성 옵션 값을 설정합니다.

minservermemorymaxservermemory 서버 구성 옵션을 같은 값으로 설정하지 마십시오. 그러면 SQL Server에 할당되는 메모리 양이 고정됩니다. 동적 메모리 할당을 통해 언제나 최대의 성능을 얻을 수 있습니다. 자세한 내용은 서버 메모리 옵션을 참조하십시오.

maxworkerthreads 서버 구성 옵션을 사용하면 SQL Server에 연결된 사용자를 지원하기 위해 사용되는 스레드 수를 지정할 수 있습니다. max worker threads의 기본값인 0을 사용하면 SQL Server를 시작할 때 작업자 스레드 수가 자동으로 구성됩니다. 이 설정은 대부분의 시스템에 적합하지만 시스템 구성에 따라서는 max worker threads를 특정 값으로 설정하는 것이 성능 향상에 도움이 될 수도 있습니다. 자세한 내용은 max worker threads 옵션을 참조하십시오.

[!참고]

SQL Server 2000에서 max worker threads의 기본 설정은 255였습니다. SQL Server 2000 데이터베이스 엔진 인스턴스를 최신 버전으로 업그레이드해도 max worker threads의 구성 값은 그대로 유지됩니다. 업그레이드 시 새 인스턴스 max worker threads 값을 0으로 변경하여 데이터베이스 엔진에서 최적의 스레드 수를 계산할 수 있도록 하는 것이 좋습니다.

indexcreatememory 서버 구성 옵션은 인덱스를 생성하는 동안 정렬 작업에 사용되는 메모리의 양을 제어합니다. 프로덕션 시스템에 인덱스를 만드는 작업은 자주 수행되지 않는 태스크이므로 사용량이 많지 않은 시간에 실행되도록 예약되는 경우가 많습니다. 따라서 인덱스 생성을 사용량이 많지 않은 시간에 가끔씩 수행하는 경우 이 수치를 늘리면 인덱스 만들기 성능이 향상될 수 있습니다. 그러나 요청된 모든 메모리를 사용할 수 없는 상황이라도 인덱스 생성 작업이 시작될 수 있게 하려면 minmemoryperquery 구성 옵션을 낮은 수치로 유지해야 합니다. 자세한 내용은 index create memory 옵션을 참조하십시오.

minmemoryperquery 서버 구성 옵션은 쿼리 실행을 위해 할당되는 최소 메모리 양을 지정할 때 사용할 수 있습니다. 시스템에서 동시에 실행되는 쿼리가 많을 때 min memory per query 값을 늘리면 대량의 정렬 및 해시 작업과 같이 메모리를 많이 사용하는 쿼리의 성능 향상에 도움이 될 수 있습니다. 하지만 요청된 최소 메모리를 확보하거나 query wait 서버 구성 옵션에 지정된 값이 초과될 때까지 쿼리가 대기해야 하기 때문에 사용량이 많은 시스템 등에서 minmemoryperquery 서버 구성 옵션을 너무 높게 설정해서는 안 됩니다. 쿼리 실행에 필요한 것으로 지정된 최소 값보다 더 많은 메모리를 사용할 수 있는 경우에는 쿼리에서 메모리를 효과적으로 사용할 수 있다면 추가 메모리를 사용할 수 있습니다. 자세한 내용은 min memory per query 옵션쿼리 대기 옵션을 참조하십시오.