Compartilhar via


Configurar a opção max worker threads de configuração de servidor

Este tópico descreve como configurar a opção de configuração de servidor max worker threads no SQL Server usando o SQL Server Management Studio ou o Transact-SQL. A opção max worker threads configura o número de threads de trabalho que estão disponíveis para os processos do SQL Server. O SQL Server usa os serviços de thread nativos dos sistemas operacionais de forma que um ou mais threads ofereçam suporte a cada rede à qual o SQL Server oferece suporte simultaneamente, outro thread controle pontos de verificação de banco de dados e um pool de threads controle todos os usuários. O valor padrão de max worker threads é 0. Isso habilita o SQL Server a configurar automaticamente o número de threads de trabalho na inicialização. A configuração padrão é a melhor para a maioria dos sistemas. No entanto, dependendo de sua configuração de sistema, a definição de max worker threads com um valor específico às vezes melhora o desempenho.

Neste tópico

  • Antes de começar:

    Limitações e restrições

    Recomendações

    Segurança

  • Para configurar a opção max worker threads, usando:

    SQL Server Management Studio

    Transact-SQL

  • Acompanhamento: depois de configurar a opção max worker threads

Antes de começar

Limitações e restrições

  • Quando o número real de solicitações de consulta é menor que a quantidade definida em max worker threads, um thread controla cada solicitação de consulta. Porém, se o número real de solicitação de consulta exceder a quantia definida em max worker threads, o SQL Server fará o pool dos threads de trabalho de forma que próximo thread de trabalho disponível possa controlar a solicitação.

Recomendações

  • Esta é uma opção avançada e deve ser alterada somente por um administrador de banco de dados experiente ou técnico certificado do SQL Server.

  • O thread pooling ajuda a otimizar o desempenho quando são conectados grandes números de clientes ao servidor. Normalmente, é criado um thread de sistema operacional separado para cada solicitação de consulta. Porém, com centenas de conexões para o servidor, usam um thread por solicitação de consulta pode consumir quantias grandes de recursos do sistema. A opção max worker threads habilita o SQL Server a criar um pool de threads de trabalho para atender a um número maior de solicitações de consulta, o que melhora o desempenho.

  • A tabela a seguir mostra o número configurado automaticamente de máximo de threads de trabalho para várias combinações de CPUs e versões do SQL Server.

    Número de CPUs

    Computador de 32 bits

    Computador de 64 bits

    <= 4 processadores

    256

    512

    8 processadores

    288

    576

    16 processadores

    352

    704

    32 processadores

    480

    960

    64 processadores

    736

    1472

    128 processadores

    4224

    4480

    256 processadores

    8320

    8576

    ObservaçãoObservação

    Para obter recomendações sobre como usar mais de 64 CPUs, consulte Práticas recomendadas para executar o SQL Server em computadores que têm mais de 64 CPUs.

    Observação sobre cuidadosCuidado

    É recomendável 1024 como o número máximo de threads de trabalho para uma instância do SQL Server executado em um computador de 32 bits.

  • Quando todos os threads de trabalho estiverem ativos com a execução de consultas longas, o SQL Server poderá parecer não estar respondendo até que um thread de trabalho seja concluído e fique disponível. Embora não seja um defeito, isso às vezes pode ser indesejável. Se um processo parecer ser não estar respondendo e nenhuma nova consulta possa ser processada, então conecte ao SQL Server que usa a conexão de administrador dedicada (DAC) e elimine o processo. Para evitar isto, aumente o número de máximo threads de trabalho.

A opção de configuração do servidor máximo de threads de trabalho não leva em conta os threads necessários para todas as tarefas de sistema como Grupos de Disponibilidade, Service Broker, Gerenciador de Bloqueio e outros. Se o número de threads configurados está sendo excedido, a consulta a seguir fornece informações sobre as tarefas de sistema que geraram os threads adicionais.

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;

Segurança

Permissões

Permissões de execução em sp_configure sem parâmetros ou somente com o primeiro parâmetro são concedidas a todos os usuários por padrão. Para executar sp_configure com ambos os parâmetros para alterar uma opção de configuração ou executar a instrução RECONFIGURE, o usuário deve ter a permissão ALTER SETTINGS em nível de servidor. A permissão de ALTER SETTINGS é implicitamente mantida pelas funções de servidor fixas sysadmin e serveradmin.

Ícone de seta usado com o link Voltar ao Início[Início]

Usando o SQL Server Management Studio

Para configurar a opção max worker threads

  1. No Pesquisador de Objetos, clique com o botão direito do mouse em um servidor e selecione Propriedades.

  2. Clique no nó Processadores.

  3. Na caixa Máximo de threads de trabalho, digite ou selecione um valor entre 128 e 32767.

    Use a opção max worker threads para configurar o número de threads de trabalho disponível para os processos do SQL Server. A configuração padrão para max worker threads é a melhor para a maioria dos sistemas. No entanto, dependendo de sua configuração de sistema, definir máximo de threads de trabalho como um valor menor algumas vezes melhora o desempenho.

Ícone de seta usado com o link Voltar ao Início[Início]

Usando Transact-SQL

Para configurar a opção max worker threads

  1. Conecte-se ao Mecanismo de Banco de Dados.

  2. Na barra Padrão, clique em Nova Consulta.

  3. Copie e cole o exemplo a seguir na janela de consulta e clique em Executar. Este exemplo mostra como usar sp_configure para configurar a opção max worker threads como 900.

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

Para obter mais informações, consulte Opções de configuração de servidor.

Ícone de seta usado com o link Voltar ao Início[Início]

Acompanhamento: depois de configurar a opção max worker threads

A alteração entrará em vigor imediatamente sem exigir que o Mecanismo de Banco de Dados reinicie.

Ícone de seta usado com o link Voltar ao Início[Início]

Consulte também

Referência

RECONFIGURE (Transact-SQL)

sp_configure (Transact-SQL)

Conceitos

Opções de configuração de servidor

Conexão de diagnóstico para administradores de banco de dados