2010-11-15 9 views
8

Mostrar estado al igual que devuelve 'Qcache_queries_in_cache':¿Cómo hacer una lista de las consultas en caché en MySQL? (Qcache_queries_in_cache)

+-------------------------+----------+ 
| Variable_name   | Value | 
+-------------------------+----------+ 
| Qcache_queries_in_cache | 327  | 
+-------------------------+----------+ 

¿Cómo puedo imprimir estos 327 consultas?

En un intento de optimizar el almacenamiento en caché de mysql, quiero intentar cambiar al caché "bajo demanda". Pero antes de hacerlo quiero obtener un sentido definitivo de qué consultas se almacenan en caché o se descartan. Intenté buscar en mysql docs, google y stackoverflow, pero no tuve suerte.

Respuesta

8

Las consultas sql de AFAIK no se almacenan en Qcache solo su hash. Por lo tanto, no hay forma de encontrar qué consultas están almacenadas en la memoria caché, excepto que ejecute una de sus consultas y vea los cambios de la columna Valor.

+0

thx ... Estoy en un servidor de producción y ejecutar las numerosas consultas realizadas y detectar cambios no va a funcionar. Esperaba un modo de depuración de algún tipo. – user508627

+0

¿Hay alguna manera de llegar a esos valores hash? – simbabque

2

Si habilita una sesión de perfil variable específica

SET SESSION PROFILING=on; 
show profiles; 

Ahora marcando el perfil espectáculo para su consulta query_id;

mysql> show profile for query 2; 

+--------------------------------+----------+ 
| Status       | Duration | 
+--------------------------------+----------+ 
| starting      | 0.000017 | 
| checking query cache for query | 0.000005 | 
| checking privileges on cached | 0.000003 | 
| sending cached result to clien | 0.000005 | 
| logging slow query    | 0.000002 | 
| cleaning up     | 0.000001 | 
+--------------------------------+----------+ 

Al marcar la columna de estado, puede ver si las consultas están en la memoria caché.

Pero esto es solo una sesión específica que tiene perfiles de habilitación para cada sesión.

Cuestiones relacionadas