Os tempos de consulta do MySQL para ajuste são diferentes a cada vez

2

Estou ajustando o tempo de consulta do SQL para minha consulta lenta, mas sempre que obtenho tempos diferentes, não posso avaliar minha solução de otimização.

Por exemplo, executo a consulta select * from abc where abc.status in (x,y,z) and abc.scale>123; três vezes e obtenho tempo de resultado como 5s, 11s, 9s.

Eu desliguei o cache de consultas. Como posso obter uma sandbox limpa para ajustar minha consulta lenta?

    
por Yadun 14.07.2011 / 07:25

2 respostas

0

O mais provável é que o servidor esteja fazendo outras coisas diferentes em segundo plano. As consultas do MySQL são muito afetadas pelo IO, e os distúrbios na forma de outros processos que executam o trabalho de IO na máquina podem alterar significativamente os tempos de consulta.

Certifique-se de estar executando isso em um servidor isolado, se quiser comparações de desempenho repetitivas.

    
por 14.07.2011 / 11:23
0

A outra alternativa para ter um ambiente puro e imaculado é executar sua consulta repetidamente (como centenas de vezes) e fazer algumas análises estatísticas de seus resultados. A chave é isolar quaisquer variáveis conflitantes (executando os testes na mesma máquina, com o mesmo código de andaimes e sem quaisquer vieses nas outras tarefas em execução (difícil, eu sei). Você pode então fazer conclusões probabilísticas sobre se um determinado consulta é melhor do que outra (embora quantificar a melhoria exata é frutado com perigo).

Ou você pode usar apenas EXPLAIN <query> , que mostrará um plano de consulta e fornecerá uma boa ideia de qual das duas consultas é "melhor".

    
por 15.07.2011 / 08:36