Meu aplicativo é executado no docker, então posso ter certeza de que é sempre a mesma versão do MySQL, a mesma estrutura de banco de dados, os mesmos agrupamentos e assim por diante. Eu executo em várias máquinas. Em todos eles, meu script de benchmark que faz inserções sequenciais de 20k leva um tempo razoável (como 30 segundos). Mas em uma máquina leva cerca de 13m. As estatísticas de hardware são semelhantes em termos de núcleos de CPU e RAM (8 núcleos, 16 GB). O sistema operacional da máquina crítica é o Debian Bullseye, como em um dos outros também (os outros são várias variantes do Debian ou Ubuntu). Por que essa VM específica pode ter um desempenho muito pior que as outras?
Pode ser devido a
fsync
comportamentos diferentes em duas máquinas diferentes.Você pode tentar relaxar as restrições de persistência de dados para ver se as máquinas lentas se tornam repentinamente rápidas. Nesse caso, seu problema está relacionado ao
fsync
desempenho lento (gravações de sincronização).Observe que isso IRÁ quebrar a conformidade do ACID, portanto, use essas configurações apenas para testes e depois reverta para os parâmetros padrão. NÃO experimente em um servidor de produção.
Na máquina lenta, tente configurar o seguinte:
Reinicie
mysql
e emita novamente seus INSERTs.Quando terminar, lembre-se de remover essas opções para restaurar o ACID completo e reiniciar
mysql
novamente.