max worker threads 옵션

max worker threads 옵션을 사용하여 Microsoft SQL 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를 설정하는 것이 좋습니다.

실제 쿼리 요청 수가 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 시스템 저장 프로시저를 사용하여 설정을 변경하면 show advanced options를 1로 설정할 때만 max worker threads를 변경할 수 있습니다. 새 설정은 시스템을 다시 시작해야 적용됩니다.

[!참고]

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