A consulta MySQL está demorando muito tempo após o índice ser reconstruído, mas depois funciona rápido… por quê?

2

Eu tenho uma tabela simples com registros 3M e um índice exclusivo simples em um campo inteiro. Ao selecionar

SELECT * FROM ThisTable ORDER BY ThatField LIMIT 10

Funciona muito rápido, como esperado. Quando eu insiro ou apago um registro, ou reinicio o MySQL, esta mesma consulta leva 10-20 segundos, às vezes mais.

Acredito que esteja carregando o índice na memória - isso é ótimo, mas por que o cliente deve esperar? Isso pode ser corrigido para que a consulta retorne sempre rapidamente?

Muito obrigado pela sua ajuda Andrew

    
por KOHb 08.11.2010 / 21:30

1 resposta

4

A maneira mais fácil de obter essa consulta no cache assim que o mecanismo é reiniciado é executar o select assim que o mecanismo for reiniciado.

Um arquivo de script que reinicia o processo do MySQL e, em seguida, registra imediatamente no servidor MySQL e executa SELECT * FROM ThisTable ORDER BY ThatField LIMIT 10 garantirá que a consulta seja armazenada em cache imediatamente, o que significa que a próxima consulta deve ser bem armazenada em cache.

    
por 08.11.2010 / 21:36

Tags