Categorías: Tutoriales

Comprobar el estado de la caché de MySQL

Hace unos días hablamos de cómo activar la caché de MySQL. Espero que la hayáis probado y que hayáis visto cómo vuestros tiempo de consulta se reducen considerablemente con sólo activarla. Os dije que os comentaría cómo monitorizarla y de esa promesa, esta entrada.

Soy de los que dice que algo por bien que funcione, si no puede medirse, no funciona tan bien. Las sensaciones son esos y aunque veamos que el tiempo de ejecución ha caído, no sabemos nada sobre la caché. Todos los que hayáis estudiado algo relacionado con la informática, conoceréis conceptos como la tasa de fallos y de aciertos de cualquier caché y ésta, no podía ser menos.

¿Cómo podemos ver esos datos? Veamos.

Comprobar si la caché está activada

Para esta labor usaremos el siguiente comando (siempre desde la consola de MySQL):

SHOW VARIABLES LIKE 'have_query_cache';

Que nos devolverá si está activada lo siguiente:

+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| have_query_cache | YES |
+------------------+-------+

Parámetros de estado

Para ver todos los parámetros del estado de la caché, una vez sabemos que está activada hacemos:

SHOW STATUS LIKE 'Qcache%';

Y el resultado es el siguiente:

+-------------------------+-----------+
| Variable_name           | Value     |
+-------------------------+-----------+
| Qcache_free_blocks      | 3409      |
| Qcache_free_memory      | 501720656 |
| Qcache_hits             | 3265000   |
| Qcache_inserts          | 1321208   |
| Qcache_lowmem_prunes    | 0         |
| Qcache_not_cached       | 72160     |
| Qcache_queries_in_cache | 10027     |
| Qcache_total_blocks     | 24143     |
+-------------------------+-----------+

Veamos parámetro a parámetro cuál es su significado (el significado lo he buscado en la referencia de MySQL, donde aparece el significado de todas las variables del servidor):

  • Qcache_free_blocks: El número de bloques de memoria libres en la cache de consultas.
  • Qcache_free_memory: El total de memoria libre en la cache de consultas.
  • Qcache_hits: Número de aciertos de la caché.
  • Qcache_inserts: Número de consultas que han sido agregadas a la caché.
  • Qcache_lowmem_prunes: Número de consultas borradas de la caché porque no había suficiente memoria.
  • Qcache_not_cached: Número de consultas no cacheadas, por no ser cacheables.
  • Qcache_queries_in_cache: Número de consultas registradas en la caché (no se me quedó nunca claro la diferencia con Qcache_inserts, ¿alguien la conoce?)
  • Qcache_total_blocks: Número de bloques que tiene actualmente la caché de consultas.

¿Cómo medir la eficacia de nuestra caché?

Para medir la eficacia de la caché debemos hacer la siguiente fórmula para calcular el porcentaje de acierto y por lo tanto el porcentaje de consultas que en lugar de ir a buscarse a la base de datos física, se miran directamente en la caché.

El coeficiente será el siguiente: Qcache_hits/(Com_select+Qcache_hits)

¿Qué es Com_select? Este parámetro indica la cantidad de consultas SELECT que se han ejecutado fuera de la caché. Para obtenerlo ejecutamos la siguiente consulta:

show global status like 'Com_select%';

En mi caso obtengo:

+---------------+---------+
| Variable_name | Value   |
+---------------+---------+
| Com_select    | 1371295 |
+---------------+---------+

Mi tasa será por lo tanto: 3265000 / (1371295 + 3265000) = 70,42%, no está nada mal, ¿y la vuestra?

F. Javier Carazo Gil

Cofundador de CODECTION, empresa especializada en WordPress, autor de un libro sobre WordPress (el primero en español) y multitud de artículos (en medios físicos y virtuales) sobre el tema. Participa en la comunidad WordPress de forma activa siendo parte del equipo organizador de la WordPress Meetup de Córdoba, dando charlas en diferentes WordCamp y siendo autor y coautor de multitud de plugins libres y premium para WordPress de gran éxito.

Ver comentarios

    • Se lo hemos cambiado, tenemos muchas cosas que mejorar todavía, pero ya queríamos un cambio de aspecto para Linux Hispano.

      ¿No te gusta? Tiene cosas (muchas) que mejorar, así que espero que cuando esté todo hecho te guste más.

Entradas recientes

DeepSeek

2 días hace

Contacto

2 semanas hace

Smart-tv mute

2 semanas hace

STEAM OS

3 semanas hace

2025

4 semanas hace

El podcast de Linux Hispano – #072 – El hardware libre debe consolidarse como el software libre

https://www.youtube.com/embed/z-xGk9c_eOw Guionista y locutor: Manuel Ignacio López Quintero.Fecha de publicación: 31 de diciembre de 2024.

1 mes hace