2010-05-21 27 views
5

Tengo una consulta mySQL lenta en mi aplicación que necesito volver a escribir. El problema es que solo es lento en mi servidor de producción y solo cuando no está en la memoria caché. La primera vez que lo ejecuto, tomará 12 segundos, y en cualquier momento después de eso será de 500 milisegundos.MySQL Single Query Benchmarking Strategies

¿Hay una manera fácil de probar esta consulta sin que toque la caché de consultas para que pueda ver los resultados de mi refactorización?

Gracias!

Respuesta

7

Soporta MySQL para evitar el almacenamiento en caché de consultas únicas. Trate

SELECT SQL_NO_CACHE field_a, field_b FROM table; 

, alternativamente, se puede diasble la caché de consultas para la sesión actual:

SET SESSION query_cache_type = OFF; 

Ver http://dev.mysql.com/doc/refman/5.1/en/query-cache.html

1

Para añadir a la buena respuesta de Johannes, lo que hago es

RESET QUERY CACHE;

Esto tiene la ligera ventaja añadida e de no requerir ningún cambio en las declaraciones que estoy ejecutando o en la conexión.

Una cosa trivial es alterar la afirmación que está ejecutando de alguna manera, como poner un número aleatorio en un comentario, porque las consultas se ubican en la memoria caché solo si son idénticas en bytes a alguna consulta previa.