Log con consultas lentas en MySQL

Buenas de nuevo,

siguiendo con mi proceso de optimización, he tenido que ver qué consultas de mi aplicación son las más costosas. Para ello he utilizado el mecanismo de log_slow_queries de MySQL, y la verdad, no se puede decir que sea muy intuitivo, así que os voy a detallar los pasos que he seguido para poder activarlo en mi iMac.

1- Vamos a crear el archivo my.cnf  en /etc. Este archivo lo lee el servidor de MySQL al arrancar y carga dicha configuración.

2- El contenido de este archivo en mi caso es el siguiente:

[mysqld]

slow_query_log = 1
slow_query_log_file = /var/log/nombre_del_fichero_de_log
long_query_time = 1
min_examined_row_limit = 100
log_queries_not_using_indexes

Como podéis observar, activo slow_query_log, digo en qué archivo quiero que se cree este log y establezco el tiempo a 1 segundo, todo esto a través de los parámetros slow_query_log, slow_query_log_file y long_query_time respectivamente.

3- Creo el archivo en el que voy a volcar dicho log y se lo asigno al usuario de MySQL.

4- Reinicio el servidor de MySQL

Ahora cuando empiezo a tener actividad con la base de datos, sólo tengo que mirar dicho archivo para saber cómo se están realizando dichas consultas,  y para ello lo que hago es abrir una Terminal y ejecutar la orden:

$> tail -f nombre_del_fichero_de_log

De esta manera se me mostrará en dicha terminal las últimas líneas de ese fichero al ritmo en el que se están generando.

Además de esto, es bastante común que una vez visto el problema, o los problemas, aplicar cambios y volver a querer tener un archivo de log limpio. Para resetear dicho fichero he ejecutado la siguiente orden en la terminal (en la misma línea):

$>sudo chown nombre_de_usuario nombre_del_fichero_de_log && cat /dev/null > nombre_del_fichero_de_log && sudo chown mysql:mysql nombre_del_fichero_de_log

Con esto lo que hago es cambiar el propietario de dicho archivo de log, lo vacío y lo vuelvo a asignar al usuario de MySQL…y listo para otra prueba!!

Para deshabilitar dicha característica, solamente tenemos que ir a nuestro fichero my.cnf, poner slow_query_log a 0 y reiniciar MySQL.

Acerca de

Ingeniero Informático. RoR Developer

Publicado en Informática

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: