Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Qual é o propósito de usar OPTION(MAXDOP 1) no SQL Server?


Como Kaboing mencionou, MAXDOP(n) realmente controla o número de núcleos de CPU que estão sendo usados ​​no processador de consulta.

Em um sistema completamente ocioso, o SQL Server tentará puxar as tabelas para a memória o mais rápido possível e juntá-las na memória. Pode ser que, no seu caso, seja melhor fazer isso com uma única CPU. Isso pode ter o mesmo efeito que usar OPTION (FORCE ORDER) que força o otimizador de consulta a usar a ordem de junções que você especificou. Em alguns casos, eu vi OPTION (FORCE PLAN) reduzir uma consulta de 26 segundos para 1 segundo de tempo de execução.

Books Online continua dizendo que os valores possíveis para MAXDOP estão:

0 - Usa o número real de CPUs disponíveis dependendo da carga de trabalho atual do sistema. Este é o valor padrão e a configuração recomendada.

1 - Suprime a geração de planos paralelos. A operação será executada em série.

2-64 - Limita o número de processadores ao valor especificado. Menos processadores podem ser usados ​​dependendo da carga de trabalho atual. Se for especificado um valor maior que o número de CPUs disponíveis, será usado o número real de CPUs disponíveis.

Não tenho certeza de qual é o melhor uso de MAXDOP é, no entanto, eu daria um palpite e diria que se você tiver uma tabela com 8 partições, você deve especificar MAXDOP(8) devido a limitações de E/S, mas posso estar errado.

Aqui estão alguns links rápidos que encontrei sobre MAXDOP :

Livros Online:Grau de Paralelismo

Diretrizes gerais a serem usadas para configurar a opção MAXDOP