X

Cómo detectar consultas lentas en MySQL

Siempre nos preocupa el rendimiento de nuestras aplicaciones web y siempre llegamos a esta pregunta ¿Cómo detectar consultas lentas en Mysql? La respuesta nunca es sencilla, se pueden realizar varias técnicas tanto del lado del servidor como del lado de la web para detectar cual de las muchas consultas SQL es la que ocasiona la lentitud en el sistema. Ahora bien comencemos a atacar las consultas lentas.

3 Pasos para detectar consultas lentas en Mysql

1. En un principio debemos tratar de capturar las consultas lentas, esto se logra cambiando la configuración de nuestro servidor de base de datos MySQL para que guarde en un archivo log las consultas lentas.

2. Instalar un monitor de querys en vivo en nuestro servidor llamado Mytop, con esta herramienta podemos ver cada query que se esté ejecutando en nuestro servidor Mysql, seguramente los más lentos se quedarán más tiempo en pantalla que los rápidos.

3. Cambios en nuestras consultas SQL para mejorar la velocidad de respuesta.

Modificar en My.conf el parámetro slow-query-log

Con esta modificación podemos cumplir con el primer paso

Ubicamos nuestro archivo my.conf

nano -w /etc/mysql/my.cnf

Y colocamos la siguiente configuración

slow-query-log = 1

slow-query-log-file = /var/log/mysql/mysql-slow.log

long_query_time = 1

log-queries-not-using-indexes

Reiniciamos nuestro servicio de Mysql

service mysql restart

Ahora podemos ver nuestros log de querys lentos con el siguiente comando

tail -f /var/log/mysql/mysql-slow.log

Instalar Mytop en Centos / Debian / Ubuntu

Ahora procedemos con la instalación de nuestra herramienta Mytop  que nos permitirá ver cuales son los querys que se ejecutan en vivo en nuestro servidor Mysql.

Instalación para Centos

yum install mytop

Instalación para Ubuntu y Debian

apt-get install mytop

Ejecutar Mytop, nos solicitará nuestra clave de root de Mysql

mytop --prompt

Optimizar consultas SQL en General

1. Utiliza Limit en cada consulta, este parámetro es muy importante ya que no deja que una consulta traiga todos los registros de una tabla.

2. Disminuye la utilización del select *  es mejor para las consultas traer sólo los campos necesarios, con esto ganas memoria del lado de php o de tu backend.

3. Es mejor realizar 100 selects pequeños que 1 súper select, esta técnica la utilizan todos los frameworks conocidos. Ya que cada query pequeño dura menos de 2 milisegundos y es mejor para cachear.

4. Utilizar Join hace mucho más ordenado el select a la hora de programar las condiciones.

5. La falla más común es no crear índices en nuestras tablas más consultadas. Muy importante crear índices para cuando se hacen condiciones múltiples sobre la misma tabla.

 

Esperamos sus comentarios en este interesante tema.

Artículos relacionados