Tenho experiência anterior em definir configurações de MAXDOP para servidores OLTP e OLAP locais quando você sabe o número de núcleos à sua disposição. por exemplo, se eu soubesse que tinha 16 à minha disposição, eu definiria meu MAXDOP para 2 ou 4 para o meu sistema OLTP.
Acabei de ingressar em um projeto e observei que o banco de dados de produção principal está definido como MAXDOP de 1, proibindo quaisquer operações paralelas.
É um servidor dedicado (portanto, sem pool elástico) servidor Premium P11, portanto, as DTUs abstraem a quantidade exata de CPU e capacidade de memória. Sem poder dizer com quantos núcleos você está lidando, existe uma configuração inicial sensata? achando um pouco complicado portar as melhores práticas locais para o Azure SQL.
Os servidores de teste são uma configuração diferente com um pool elástico compartilhado, portanto, também não há uma maneira fácil de testar planos de execução específicos (especialmente porque tudo é escrito por meio do ORM do Entity Framework)
DTU é uma medida combinada de CPU, memória e E/S de dados e E/S de log de transações… . Isso significa que não há uma medida definitiva de igualar x DTU = x CPU, X Memory etc.
Como você tem o nível Premium P11 - isso significa que você tem 1750 DTUs. Com base nesta postagem do blog - por Andy Mallon, abaixo está o mapeamento de camada de CPU para DTU para serviço:
+--------------+------+---------------+ | Number Cores | DTUs | Service Tier | +--------------+------+---------------+ | 1 | 100 | Standard – S3 | | 2-4 | 500 | Premium – P4 | | 5-8 | 1000 | Premium – P6 | | 9-13 | 1750 | Premium – P11 | | 14-16 | 4000 | Premium – P15 | +--------------+------+---------------+
Você deve usar o Query Performance Insight para o Banco de Dados SQL do Azure para revisar e ajustar as configurações de carga de trabalho do banco de dados. Como você tem a configuração do escopo do db como não padrão (0 é o padrão) - definido como 1, você precisará revisá-la e alterá-la potencialmente para poder utilizar todos os núcleos.
A Microsoft lançou recentemente (2022-02-04) uma nova consulta para determinar a contagem lógica de CPU para bancos de dados do modelo DTU. Embora a tabela derivada experimentalmente de Andy Mallon seja útil, ela também é de 2017 e o Azure muda com frequência.
No meu caso, descobri que a consulta da Microsoft mostrava mais CPUs lógicas do que a tabela de Andy: 4 para meus P2s e 12 para meu P6. Embora deixar o MAXDOP em zero geralmente seja uma má ideia, deixá-lo muito baixo também pode causar problemas.