max worker threads 옵션

max worker threads 옵션을 사용하여 MicrosoftSQL Server 프로세스에 사용할 수 있는 작업자 스레드 수를 구성할 수 있습니다. SQL Server는 Microsoft Windows 2000 및 Windows Server 2003 운영 체제의 네이티브 스레드 서비스를 사용하여 하나 이상의 스레드가 SQL Server에서 지원하는 각 네트워크를 동시에 지원하고 또 다른 스레드가 데이터베이스 검사점을 처리하고 스레드 풀이 모든 사용자를 처리하도록 합니다.

max worker threads 옵션의 용도

스레드 풀링을 사용하면 많은 클라이언트가 서버에 연결되어 있을 때 성능이 최적화됩니다. 보통 각 쿼리 요청마다 별도의 운영 체제 스레드가 생성됩니다. 그러나 서버에 대한 연결 수가 수백 개인 경우 쿼리 요청별로 스레드를 하나씩 사용하면 시스템 리소스를 상당히 많이 소비하게 될 수 있습니다. max worker threads 옵션을 사용하면 SQL Server에서 작업자 스레드 풀을 만들어 많은 쿼리 요청을 처리하므로 성능이 향상됩니다.

max worker threads 계산

max worker threads의 기본값인 0을 사용하면 SQL Server 시작 시 작업자 스레드 수가 자동으로 구성됩니다. 이 설정은 대부분의 시스템에 가장 적합하지만 시스템 구성에 따라 max worker threads를 특정 값으로 설정하는 것이 성능 향상에 도움이 될 수도 있습니다.

다음 표에서는 다양한 CPU 조합과 SQL Server 버전에 대해 자동으로 구성되는 max worker threads 수를 보여 줍니다.

CPU 수

32비트 컴퓨터

64비트 컴퓨터

<= 4개의 프로세서

256

512

8개의 프로세서

288

576

16개의 프로세서

352

704

32개의 프로세서

480

960

[!참고]

32비트 SQL Server에는 최대 1024, 64비트 SQL Server에는 최대 2048을 설정하는 것이 좋습니다.

실제 쿼리 요청 수가 max worker threads에 설정된 값보다 적으면 각 쿼리 요청마다 스레드 하나가 사용됩니다. 그러나 실제 쿼리 요청 수가 max worker threads에 설정된 값보다 많아지면 SQL Server가 다음에 사용할 수 있는 작업자 스레드가 요청을 처리할 수 있도록 작업자 스레드를 풀링합니다.

SQL Server 2000에서 업그레이드

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

max worker threads 설정

max worker threads는 고급 옵션입니다. sp_configure 시스템 저장 프로시저를 사용하여 설정을 변경하는 경우 max worker threadsshow advanced options가 1로 설정된 경우에만 변경할 수 있습니다. 새 설정은 시스템을 다시 시작해야 적용됩니다.

[!참고]

장기 실행 쿼리의 모든 작업자 스레드가 활성 상태이면 작업자 스레드가 완료되어 사용 가능 상태가 되기 전에는 SQL Server가 응답하지 않을 수 있습니다. 이는 오류는 아니지만 바람직한 상태는 아닙니다. 프로세스가 응답할 수 없고 새 쿼리를 처리할 수 없으면 DAC(관리자 전용 연결)를 사용하여 SQL Server에 연결한 다음 해당 프로세스를 중지합니다. 이를 방지하려면 max worker threads 수를 증가시킵니다.