Eu tenho um banco de dados SQL OLTP em execução no SQL 2008 R2 Enterprise Edition que pode estar bastante ocupado (5.000 lotes/s) nos próximos meses após a entrada em produção. Olhando para a configuração do servidor, tenho dúvidas sobre a configuração do MAXDOP, no entanto, hoje em dia, como leitor regular deste fórum, o consenso geral é que deixar a configuração do MAXDOP em todo o servidor como 0 para tarefas que precisam de operação paralela (por exemplo, reconstrução do índice e alteração do limite de custo de paralelismo para um número maior (15 ou 20 em vez do padrão 5).
No entanto, este servidor possui nós NUMA e com base nestes artigos de suporte da MS http://support.microsoft.com/kb/329204
http://support.microsoft.com/kb/2023536
para evitar acesso dispendioso à memória externa, é recomendável definir MAXDOP = número de núcleos no processador físico.
Este servidor possui 2 processadores físicos com 16 núcleos lógicos (8 físicos) em cada soquete. A diretriz sugerida pelo MS suporta KB ainda é boa?
Sei que tudo precisa ser experimentado e testado, mas meu objetivo é definir o MAXDOP para o melhor número teórico e ajustá-lo, se necessário, posteriormente. Com base nisso, devo definir a configuração MAXDOP para 8?
Normalmente eu recomendo aos meus clientes deixar o MAXDOP sozinho. O SQL Server está ciente de NUMA, portanto, sabe em qual nó NUMA os processadores estão e em qual nó NUMA a memória está e fará o melhor para atribuir o trabalho a um agendador no nó NUMA correto para os dados que você está procurando .
Analisar esse tipo de coisa também requer saber quantos nós NUMA você possui. Cada processador físico está em seu próprio nó NUMA ou eles estão no mesmo nó NUMA?