Estive debatendo com o fornecedor de aplicativos da minha empresa sobre paralelismo. Eles sustentaram que Maxdop = 1 tem melhorias significativas de desempenho para o app/db, mas não forneceram absolutamente nenhuma prova disso.
Eu testei várias configurações de DOP/CT e encontrei uma melhoria geral de desempenho de 28% em testes automatizados, ao usar Maxdop 4 (8 núcleos hyperthreaded) e CT 150.
O DBA do fornecedor disse recentemente: "Há um problema com os processos internos do MSSQL que são capazes de usar esse valor mesmo que o DOP seja '1', há SPIDs menores que 51 em um servidor MSSQL que o está usando, limpezas fantasmas e afins isto."
Eu pesquisei isso e, apesar das informações bastante escassas, Paul Randall pelo menos diz que a limpeza fantasma é sempre de thread único, então, aparentemente, o dba do fornecedor está incorreto?
Alguma opinião sobre o efeito da TC quando Maxdop =1?
Dizer que
MAXDOP=1
é sempre benéfico é uma afirmação totalmente incorreta. O valor MAXDOP deve ser definido de acordo com a configuração do núcleo da CPU do SQL Server seguida por uma boa rodada de testes. Poucos aplicativos que conheço que funcionam bem com MAXDOP 1 são DynamicsAX e Sharepoint.Sim, a limpeza fantasma é de thread único, conforme mencionado por Paul neste artigo , mas apenas porque o processo do sistema é de thread único, NÃO significa que MAXDOP = 1 será benéfico para você. Isso é o que eu avalio da sua pergunta. Você pode começar com
cost threshold of parallelism value =50
. O valor 5 mencionado é totalmente inútil e foi nos velhos tempos. Com os sistemas rodando em muitos núcleos agora, recomendo definir o limite de custo do valor de paralelismo para 50 e o valor MAXDOP, que você pode obter no link compartilhado abaixo. Veja como isso funciona para você.Já temos SE thread O que é uma boa maneira de calcular o valor MAXDOP ? Sugiro que você obtenha o valor MAXDOP das consultas mencionadas neste link e veja se isso ajuda seu ambiente.
Também não estou dizendo que você ignora completamente a recomendação dos fornecedores, mas o fornecedor fornece seu aplicativo, eles não podem alterar o comportamento do mecanismo de consulta do SQL Server.