Dicas SQL Server

Qual a melhor forma de calcular o MAXDOP no SQL Server

Qual a melhor forma de calcular o MAXDOP no SQL Server

Saiba a melhor forma de calcular o MAXDOP na sua instância SQL Server

A melhor forma de calcular o MAXDOP no SQL Server vai depender do footprint do seu processador e do NUMA NODE configurado para sua instância.

Para facilitar melhor a sua e a nossa vida, eu vou deixar disponível aqui um script que já faz o cálculo de todas as informações necessárias para trazer o resultado que estamos querendo obter. Veja abaixo:

DECLARE @RELACAOHYPERTHREADING BIT 
DECLARE @CPULOGICOS INT 
DECLARE @HTATIVADO INT 
DECLARE @CPUFISICO INT 
DECLARE @SOCKET INT 
DECLARE @CPULOGICOPORNUMA INT 
DECLARE @NODENUMA INT 

SELECT @CPULOGICOS = CPU_COUNT -- [Contador Lógico de CPU] 
 , 
 @RELACAOHYPERTHREADING = HYPERTHREAD_RATIO -- [Hyperthread Ratio] 
 , 
 @CPUFISICO = CPU_COUNT / HYPERTHREAD_RATIO -- [Contador Físico de CPU] 
 , 
 @HTATIVADO = CASE 
 WHEN CPU_COUNT > HYPERTHREAD_RATIO THEN 1 
 ELSE 0 
 END -- HTAtivado 
FROM SYS.DM_OS_SYS_INFO 
OPTION (RECOMPILE); 

SELECT @CPULOGICOPORNUMA = Count(PARENT_NODE_ID) 
-- [NumeroDeProcessadoresPorNuma] 
FROM SYS.DM_OS_SCHEDULERS 
WHERE [STATUS] = 'VISIBLE ONLINE' 
 AND PARENT_NODE_ID < 64 
GROUP BY PARENT_NODE_ID 
OPTION (RECOMPILE); 

SELECT @NODENUMA = Count(DISTINCT PARENT_NODE_ID) 
FROM SYS.DM_OS_SCHEDULERS -- Encontrar Nº de NUMA Nodes 
WHERE [STATUS] = 'VISIBLE ONLINE' 
 AND PARENT_NODE_ID < 64 

-- Recomendações .... 
SELECT 
--- 8 or less processors and NO HT enabled 
CASE 
 WHEN @CPULOGICOS < 8 
 AND @HTATIVADO = 0 THEN 'A configuração MAXDOP deve ser : ' 
 + Cast(@CPULOGICOS AS VARCHAR(3)) 
 --- 8 ou mais processadores e NO HT habilitado 
 WHEN @CPULOGICOS >= 8 
 AND @HTATIVADO = 0 THEN 'A configuração MAXDOP deve ser : 8' 
 --- 8 ou mais processadores e HT ativado e NO NUMA 
 WHEN @CPULOGICOS >= 8 
 AND @HTATIVADO = 1 
 AND @NODENUMA = 1 THEN 'A configuração MAXDOP deve ser : ' 
 + Cast(@CPULOGICOPORNUMA / @CPUFISICO AS VARCHAR(3 
 )) 
 --- 8 ou mais processadores e HT ativado e NUMA 
 WHEN @CPULOGICOS >= 8 
 AND @HTATIVADO = 1 
 AND @NODENUMA > 1 THEN 'A configuração MAXDOP deve ser : ' 
 + Cast(@CPULOGICOPORNUMA / @CPUFISICO AS VARCHAR(3 
 )) 
 ELSE '' 
END AS Recommendations  
Qual a melhor forma de calcular o MAXDOP no SQL Server
The following two tabs change content below.

Wesley Mota

DBA SQL Server
Profissional graduado em Banco de Dados e Sistemas de Informação com mais de 7 anos de experiência em empresas de software. Certificado MCSA Microsoft SQL Server possui intensa vivência em administração de banco de dados, Tunning, Performance SQL Server, levantamento de melhorias e monitoramento de banco de dados e servidores SQL Server. Consultoria SQL Server em diversos clientes no Brasil e ao redor do mundo. Escritor no blog dbasqlserverbr.com.br/blog. Onde compartilha conhecimento, experiências e dicas de performance para DBAs SQL Server. Conhecimentos em Oracle e ambientes de alta disponibilidade. Desenvolvimento de softwares web e mobile.Gerenciamento de equipe e projetos.

Latest posts by Wesley Mota (see all)