Monitorizar consultas lentas en MySQL

Puede ocurrir que nuestra página tarde mucho en cargarse. Esto puede ser debido a varios factores (conexión, carga del servidor, etc). Pero si la página realiza peticiones a una base de datos MySQL, también puede ralentizarse, debido a que las consultas no estén optimizadas.

Guardando las consultas lentas

MySQL nos brinda la posibilidad de activar un log para las consultas “lentas” al que podremos acceder para localizar que consultas están ralentizando la carga de nuestra página.

Para activar dicho log deberemos acceder al terminal SSH como administrador y acceder al archivo de configuración de MySQL, por lo general ubicado en:

/etc/mysql/my.cnf

Deberemos buscar las siguientes líneas:

# Here you can see queries with especially long duration
#log_slow_queries        = /var/log/mysql/mysql-slow.log
#long_query_time = 2

y descomentar:

  • log_slow_queries: aqui es donde indicamos la ruta del fichero log.
  • long_query_time: aqui es donde indicamos el tiempo en segundos a partir del cual se considerará una consulta lenta.

Guardaremos los cambios y reiniciaremos el servicio MySQL:

/etc/init.d/mysql restart

Ahora cada consulta sql que tarde más de 2 segundos en ejecutarse será guardada en el fichero de logs.

Recuperando la información de las consultas lentas

En MySQL también disponemos de mysqldumpslow, una herramienta mediante la cual podremos leer el fichero log, filtrar y ordenar los resultados para que podamos consultarlos de manera mas sencilla, mediante una serie de comandos.

Por ejemplo con:

mysqldumpslow -s c -t 10 /var/log/mysql/mysql-slow.log

Estamos solicitando las 10 consultas (-t 10) que se han ejecutado mas veces (-s c).

Facebooktwittergoogle_plus