max worker threads 서버 구성 옵션 구성

이 항목에서는 SQL Server Management Studio 또는 Transact-SQL을 사용하여 SQL Server에서 max worker threads 서버 구성 옵션을 구성하는 방법에 대해 설명합니다. max worker threads 옵션은 SQL Server 프로세스에 사용할 수 있는 작업자 스레드 수를 구성합니다. SQL Server는 운영 체제의 네이티브 스레드 서비스를 사용하여 하나 이상의 스레드가 SQL Server에서 지원하는 각 네트워크를 동시에 지원하고 또 다른 스레드가 데이터베이스 검사점을 처리하고 스레드 풀이 모든 사용자를 처리하도록 합니다. max worker threads의 기본값은 0입니다. 이 값을 사용하면 SQL Server를 시작할 때 작업자 스레드 수가 자동으로 구성됩니다. 기본 설정은 대부분의 시스템에 적합합니다. 그러나 시스템 구성에 따라 max worker threads를 특정 값으로 설정하면 성능이 향상되기도 합니다.

항목 내용

  • 시작하기 전 주의 사항

    제한 사항

    권장 사항

    보안

  • 최대 작업자 스레드 수 옵션을 구성하려면:

    SQL Server Management Studio

    Transact-SQL

  • 후속 작업:  최대 작업자 스레드 수 옵션을 구성한 후

시작하기 전 주의 사항

제한 사항

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

권장 사항

  • 이 옵션은 고급 옵션으로, 숙련된 데이터베이스 관리자나 공인된 SQL Server 기술 지원 담당자만 변경해야 합니다.

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

  • 다음 표에서는 다양한 CPU 조합과 SQL Server 버전에 대해 자동으로 구성되는 최대 작업자 스레드 수를 보여 줍니다.

    CPU 수

    32비트 컴퓨터

    64비트 컴퓨터

    <= 4개의 프로세서

    256

    512

    8개의 프로세서

    288

    576

    16개의 프로세서

    352

    704

    32개의 프로세서

    480

    960

    64개의 프로세서

    736

    1472

    128개의 프로세서

    4224

    4480

    256개의 프로세서

    8320

    8576

    [!참고]

    64개가 넘는 CPU 사용에 대한 권장 사항은 64개를 초과하는 CPU가 있는 컴퓨터에서 SQL Server를 실행하기 위한 최선의 방법을 참조하십시오.

    주의 사항주의

    32비트 컴퓨터에서 실행 중인 SQL Server 인스턴스의 최대 작업자 스레드 수는 1024로 설정하는 것이 좋습니다.

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

최대 작업자 스레드 서버 구성 옵션은 가용성 그룹, Service Broker, 잠금 관리자 등의 모든 시스템 태스크에 필요한 계정 스레드를 고려하지 않습니다. 구성된 스레드 수가 초과하는 경우 다음 쿼리에서 추가 스레드를 생성한 시스템 태스크에 대한 정보를 제공합니다.

SELECT
s.session_id,
r.command,
r.status,
r.wait_type,
r.scheduler_id,
w.worker_address,
w.is_preemptive,
w.state,
t.task_state,
t.session_id,
t.exec_context_id,
t.request_id
FROM sys.dm_exec_sessions AS s
INNERJOIN sys.dm_exec_requests AS r
    ON s.session_id = r.session_id
INNER JOIN sys.dm_os_tasks AS t
    ON r.task_address = t.task_address
INNER JOIN sys.dm_os_workers AS w
    ON t.worker_address = w.worker_address
WHERE s.is_user_process = 0;

보안

사용 권한

매개 변수 없이 또는 첫 번째 매개 변수만 사용하여 sp_configure를 실행할 수 있는 권한은 기본적으로 모든 사용자에게 부여됩니다. 구성 옵션을 변경하거나 RECONFIGURE 문을 실행하는 두 매개 변수를 사용하여 sp_configure를 실행하려면 사용자에게 ALTER SETTINGS 서버 수준 권한이 있어야 합니다. sysadminserveradmin 고정 서버 역할은 ALTER SETTINGS 권한을 암시적으로 보유하고 있습니다.

맨 위 링크와 함께 사용되는 화살표 아이콘[맨 위로 이동]

SQL Server Management Studio 사용

최대 작업자 스레드 수 옵션을 구성하려면

  1. 개체 탐색기에서 서버를 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다.

  2. 프로세서 노드를 클릭합니다.

  3. 최대 작업자 스레드 수 입력란에 128~32767 범위의 값을 입력하거나 선택합니다.

    max worker threads 옵션을 사용하여 SQL Server 프로세스에 사용할 수 있는 작업자 스레드 수를 구성할 수 있습니다. 대부분의 시스템에는 max worker threads의 기본 설정을 사용하는 것이 최상의 방법입니다. 그러나 시스템 구성에 따라 max worker threads를 더 작은 값으로 설정하면 성능이 향상되기도 합니다.

맨 위 링크와 함께 사용되는 화살표 아이콘[맨 위로 이동]

Transact-SQL 사용

최대 작업자 스레드 수 옵션을 구성하려면

  1. 데이터베이스 엔진에 연결합니다.

  2. 표준 도구 모음에서 새 쿼리를 클릭합니다.

  3. 다음 예를 복사하여 쿼리 창에 붙여 넣고 실행을 클릭합니다. 이 예에서는 sp_configure를 사용하여 max worker threads 옵션을 900으로 구성하는 방법을 보여 줍니다.

EXEC sp_configure 'show advanced options', 1;
GO
RECONFIGURE ;
GO
EXEC sp_configure 'max worker threads', 900 ;
GO
RECONFIGURE;
GO

자세한 내용은 서버 구성 옵션을 참조하십시오.

맨 위 링크와 함께 사용되는 화살표 아이콘[맨 위로 이동]

후속 작업: 최대 작업자 스레드 수 옵션을 구성한 후

데이터베이스 엔진을 다시 시작할 필요 없이 변경 사항이 즉시 적용됩니다.

맨 위 링크와 함께 사용되는 화살표 아이콘[맨 위로 이동]

참고 항목

참조

RECONFIGURE(Transact-SQL)

sp_configure(Transact-SQL)

개념

서버 구성 옵션

데이터베이스 관리자를 위한 진단 연결