Estou usando o procedimento de armazenamento sp_BlitzCache de Brent Ozar e estou tentando descobrir por que ele está relatando:
"Algo em seu plano está forçando uma consulta em série. Uma investigação mais aprofundada é necessária se isso não for planejado."
Após investigação, descobri que a configuração do servidor foi definida:
'Max Degree of Parallelism = 1'
(Isso está na minha lista para configurar corretamente. É um resquício de dias de ignorância.)
Isso está definindo a causa do Brent para relatar a serialização forçada?
Para adicionar um pouco, essa verificação encontrará qualquer motivo pelo qual uma consulta seja forçada a executar um único thread:
Em um ponto, a Microsoft documentou uma lista de motivos pelos quais uma consulta não poderia ser paralela e como isso seria representado no plano de consulta XML , mas na prática (com algumas alterações recentes no Azure SQL DB) uma lista muito limitada de motivos jamais ser especificamente borbulhado.
Na maioria das vezes, tudo o que você obtém para um NonParallelPlanReason é CouldNotGenerateValidParallelPlan . É por isso que eu assinei o cheque para encontrar qualquer motivo genericamente.
Poderia ser potencialmente mais expressivo ou ignorado em versões restritas ao paralelismo (como Express Edition), mas por enquanto ele apenas avisará em todos os lugares.
Sim, isso causaria esse problema.
se nada contra isso (outros serviços, vms etc) use como valores o número de cpus e com hyperthreading o número de todos os cpus virtuais.
Para mais informações e recomendações você pode ver em
https://learn.microsoft.com/en-US/sql/database-engine/configure-windows/configure-the-max-degree-of-parallelism-server-configuration-option?view=sql-server-ver15