메모리 구성 옵션을 사용하여 서버 성능 최적화
Microsoft SQL Server 2005 에는 메모리 관리자 구성 요소가 있기 때문에 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 서버 구성 옵션 값을 설정합니다.
minservermemory와 maxservermemory 서버 구성 옵션을 같은 값으로 설정하지 마십시오. 그러면 SQL Server 에 할당되는 메모리 양이 고정됩니다. 동적 메모리 할당을 통해 언제나 최대의 성능을 얻을 수 있습니다. 자세한 내용은 server memory 옵션을 참조하십시오.
maxworkerthreads 서버 구성 옵션은 SQL Server 에 연결된 사용자를 지원하기 위해 사용되는 스레드 수를 지정할 때 사용할 수 있습니다. 동시 사용자 수에 따라 일부 구성에 대해서는 기본 설정 255가 너무 높을 수 있습니다. 각 작업자 스레드가 사용되지 않더라도 할당은 되므로(할당된 작업자 스레드보다 동시 연결 수가 적기 때문) 버퍼 캐시와 같은 그 밖의 작업에서 더 유용하게 사용될 수 있는 메모리 리소스가 사용되지 않을 수 있습니다. 일반적으로 이 구성 값은 동시 연결 수로 설정되어야 하지만 32727을 초과할 수 없습니다. 동시 연결은 로그인 연결과 같지 않습니다. SQL Server 인스턴스에 대한 작업자 스레드 풀은 해당 인스턴스에서 동시에 일괄 처리를 실행하는 사용자 연결에 충분히 사용될 만큼만 필요합니다. 작업자 스레드 수를 기본값 이상으로 늘리면 서버의 성능이 떨어질 수 있습니다. 자세한 내용은 max worker threads 옵션을 참조하십시오.
indexcreatememory 서버 구성 옵션은 인덱스를 생성하는 동안 정렬 작업에서 사용하는 메모리 양을 제어합니다. 프로덕션 시스템에 인덱스를 만드는 작업은 자주 수행되지 않는 작업이므로 사용량이 많지 않은 시간에 실행되도록 예약되는 경우가 많습니다. 따라서 인덱스 생성을 사용량이 많지 않은 시간에 가끔씩 수행하는 경우 이 수치를 늘리면 인덱스 만들기 성능이 향상될 수 있습니다. 그러나 요청된 모든 메모리를 사용할 수 없는 상황이라도 인덱스 생성 작업이 시작될 수 있게 하려면 minmemoryperquery 구성 옵션을 낮은 수치로 유지해야 합니다. 자세한 내용은 index create memory 옵션을 참조하십시오.
minmemoryperquery 서버 구성 옵션은 쿼리 실행을 위해 할당되는 최소 메모리 양을 지정할 때 사용할 수 있습니다. 시스템에서 동시에 실행되는 쿼리가 많을 때 min memory per query 값을 늘리면 대량의 정렬 및 해시 작업과 같이 메모리를 많이 사용하는 쿼리의 성능 향상에 도움이 될 수 있습니다. 하지만 요청된 최소 메모리를 확보하거나 query wait 서버 구성 옵션에 지정된 값이 초과될 때까지 쿼리가 대기해야 하기 때문에 사용량이 많은 시스템 등에서 minmemoryperquery 서버 구성 옵션을 너무 높게 설정해서는 안 됩니다. 쿼리 실행에 필요한 것으로 지정된 최소 값보다 더 많은 메모리를 사용할 수 있는 경우에는 쿼리에서 메모리를 효과적으로 사용할 수 있다면 추가 메모리를 사용할 수 있습니다. 자세한 내용은 min memory per query 옵션 및 query wait 옵션을 참조하십시오.
참고 항목
작업
방법: 최소 쿼리 메모리 설정(SQL Server Management Studio)
개념
메모리 사용 모니터링
min 및 max server memory의 효과
큰 데이터베이스의 메모리 관리