1

MySQL - Detecta esas querys problemáticas!

Acabo de tomar y aprobar el curso de MySQL, ya contaba con algo de conocimiento sobre este motor y en lo personal es uno de mis favoritos. Por ende quisiera hablar de algo que sucede muy a menudo en los desarrollos y que afecta en la mayoría de los casos nuestro servidor MySQL y son lo que denominare como consultas problematicas.

En el curso se nos hablaba de algunas herramientas que nos permiten detectar consultas que toman demasiado tiempo en su ejecución y que afectan el rendimiento del servidor, generando cuellos de botella, uso excesivo de CPU, lentitud, etc. Las herramientas de las que hablaremos y que nos darian una luz de que o cuales dentro de nuestras consultas problematicas puedan estar causando estos problemas y asi poder proceder a optimizarla. Iniciare por la de activar el log de consultas lentas (Slow Query Log) y en futuros post con otras que nos pueden echar un cable.

Slow Query Log

La primera que vamos a ver es la de activar el log de consultas lentas en MySQL, lo que nos permitira definir un tiempo maximo de lo que deberan tomar la ejecución de las sentencias. Para determinar el tiempo maximo existe una variable llamada long_query_time. Una vez determinado el tiempo maximo, cualquier consulta que supere este tiempo quedará registrada en dicho log, Para activar este log debemos añadir al archivo my.cnf, el cual es uno de los archivos de configuración de MySQL, lo siguiente. Tambien podremos añadir la linea long-queries-not-using-indexes que permite registrar consultas que no usan índices (por lo general las que generan más lentitud.)

log-slow-queries = /var/log/mysql-slow-queries.log
long_query_time = 5
long-queries-not-using-indexes

Después de la modificación del archivo de configuración de MySQL (my.cnf), crearemos el archivo donde se almacenará la información, además de también indicar de quién es propiedad el archivo.

nano /var/log/mysql-slow-queries.log
chown mysql.root /var/log/mysql-slow-queries.log

Por último, reiniciamos el servicio.

/etc/init.d/mysql restart

El log ya se encuentra activo y cuando examinamos el archivo ya con registros en él, podremos encontrar los siguientes datos, que a continuación describo:

**Time:** Hora en la que se ejecuta la **consulta**.
**Query_time:** Tiempo que tardo en ejecutarse la **consulta**.
**Lock_time:** Tiempo de bloqueo que utiliza la **consulta** en la ejecución.
**Rows_sent:** Tuplas enviadas desde la **consulta**
**Rows_examined:** Es el numero de registros que se validaron.
**[email protected]:** Usuario y Host.
**Sentencia SQL**

TIPS:
- Validar en la activación del Slow Query Log que este no se encuentra ya activado:

# mysqladmin var |grep log_slow_queries
| log_slow_queries                | OFF                       |

- Recordar lo enseñado en el curso, con respecto a las consultas y la recomendación que nos ofrecen de realizarlas sobre los índices, de esta forma identificamos en los logs, sentencias que son susceptibles a optimización.

Saludos

Escribe tu comentario
+ 2