Identificar las consultas más lentas de MySql

Por el 27 de noviembre de 2006

en: Programacion

Uno de los pasos más importantes a la hora de optmizar nuestras consultas de MySql es identificar cuáles son las que están causando problemas.

¿Cómo podemos detectar cuáles son las consultas más lentas?

MySql puede praticamente responder cualquier pregunta que le estes haciendo sobre las bases de datos unicamente debemos saber preguntar de la manera correcta…

Normalmente si tomamos las 10 consultas más lentas y las optimizamos de manera apropiada obtendremos un notable aumento en el rendimiento.

Vamos a ver cómo podemos identificar estas consultas:

Activar el ‘log’ de mysql para consultas lentas

El primer paso sera asegurarnos que nuestro servidor tiene activado el log que nos mostrará aquellas consultas más lentas.

Chequeemos si el servidor MySql tiene el log activo:

mysqladmin var |grep log_slow_queries
| log_slow_queries | OFF |

Si log_slow_queries esta en ‘ON’ ya tenemos el log activo, por defecto esta opción suele estar desactivada en caso de no tener log_slow_queries definido en la configuración del servidor tambien estará desactivado.

La variable long_query_time (Por defecto 1) define a partir de donde se tiene que considerar una consulta como lenta. El valor 1 está expresado en segundos y determina que toda consulta que exceda ese tiempo es considerada como tal.

Despues de esto ya estamos listos para activar el mysql slow query log. Deberemos de dirigirnos al fichero de configuración del servidor MySql (/etc/my.cnf RHEL/Centos o /etc/mysql/my.cnf en Debian, etc.) en la sección mysqld añadiremos:

[mysqld]
long_query_time = 1
log-slow-queries = /var/log/mysql/mysql-slow.log

Está configuracion añadira al log todas aquellas consultas que sobrepasen un segundo en el archivo /var/log/mysql/mysql-slow.log.

Obviamente es tu decisión determinar cual es el long_query_time.

2. Analizar el mysql slow queries log

Despues de activar el mysql slow queries log deberemos analizar los datoss devueltos aquí os dejo una serie de detalles que os ayudarán a comprender este archivo:

* Time: Cuánto tardó en ejecutarse la consulta
* Rows: Cuántos registros fueron servidos por el servidor
* Host: Cual fué el host que ejecutó la consulta
* La consulta MySql

Esta información nos será suficiente para determinar qué consultas deben ser optimizadas.

MySql nos ofrece una pequeña utilidad que nos ayuda a analizar estos datos: The Slow Query Log

Fuente original (Inglés)

Dejar un comentario