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çã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.
Cuidado É 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.
[Início]
Usando o SQL Server Management Studio
Para configurar a opção max worker threads
No Pesquisador de Objetos, clique com o botão direito do mouse em um servidor e selecione Propriedades.
Clique no nó Processadores.
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.
[Início]
Usando Transact-SQL
Para configurar a opção max worker threads
Conecte-se ao Mecanismo de Banco de Dados.
Na barra Padrão, clique em Nova Consulta.
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.
[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.
[Início]
Consulte também
Referência
Conceitos
Opções de configuração de servidor
Conexão de diagnóstico para administradores de banco de dados