Como identificar consultas lentas en MySQL
Escrito por Omi en Tutoriales, Tutoriales Programación
MySQL puede crear verdaderos problemas en un servidor que tenga usuarios que abusen de él con ciertas consultas.
El siguiente artículo te mostrará como identificar con éxito aquellas consultas que estan generando problemas en tu servidor.
Por si el inglés no es tu fuerte, a continuación te ofrezco el documento traducido al castellano.
MySQL puede guardar un registro de aquellas consultas que tardan más de X segundos, pero esta opción no se encuentra activada por defecto.
Así es como podrás activarla (las instrucciones son para Linux, aunque es fácilmente exportable):
- Accede a tu servidor como “root”
- Abre el fichero “my.cnf” con tu editor favorito. Ejemplo:
pico /etc/my.cnf
- Busca la sección [mysqld] y añade dentro las siguientes líneas:
log-slow-queries = /var/log/mysql-slow.log
long_query_time = 3
Esto es sólo un ejemplo. Puedes utilizar el nombre del archivo que quieras y establecer “long_query_time” a cualquier valor deseado. Es este ejemplo, se guardará un registro, en el fichero /var/log/mysql-slow.log, de aquellas consultas que tarden más de 3 segundos.
- Graba las modificaciones
En pico: CTRL+X y YES
- Ahora tendrás que crear el fichero de registro:
touch /var/log/mysql-slow.log
- Ahora cambiamos el propietario del archivo para que mysql pueda escribir en él.
chown mysql.root /var/log/mysql-slow.log
- Reiniciamos mysql
service mysql restart
- Espera unos minutos y luego examina el fichero de registro
- Unos ejemplos de como hacerlo:
cat /var/log/mysql-slow.log
tail /var/log/mysql-slow.log
tail -50 /var/log/mysql-slow.log
Una vez que hayas identificado la consulta abusiva, tendrás que mejorarla o eliminarla.
De nuevo, contrasta los resultados de la carga de tu servidor con el fichero de registro.
Después de que hayas resuelto todos los problemas, comenta las líneas que añadíste al fichero “my.cnf”, ya que si las dejas activadas pueden ralentizar un poco el servidor. Debería parecerse a lo siguiente:
#log-slow-queries = /var/log/mysql-slow.log
#long_query_time = 3
Y no te olvides de reiniciar MySQL después de esto.
service mysql restart
Espero que te sirva de ayuda !
También, te sugiero que leas:



Entradas (RSS)