Cuando se requiera optimizar nuestra base de datos, en este caso MySQL, de seguro nos encontraremos con el problema de que no podamos distinguir en primera instancia cuales son las consultas que tardan un elevado tiempo en ejecutarse. MySQL incluye una utilidad para este tipo de escenarios, configurando el parametro log_slow_queries estaremos en las condiciones de poder identificar las consultas mas lentas, para asi optimizar los objetos (tablas, indices…) que estén relacionados.
En este caso, las pruebas se hicieron en un servidor Centos 7, para el caso del SO. Windows, solo se tendría que identificar el path donde esta instalado MySQL.
Configuración log_slow_queries
1. Abrimos el archivo my.conf
[root@localhost ~]# vim /etc/my.cnf
2. Editamos los siguientes parametros del archivo my.conf
log_slow_queries = 1; long_query_time = 10; slow_query_log_file = /var/log/mysqld_long_query.log;
3. Reiniciamos el servicio de MySQL
[root@localhost ~]# systemctl restart mysqld
4. Hacemos pruebas de nuestra aplicación y si queremos ver en tiempo real la lectura usamos el comando tail
[root@localhost ~]# tail -f /var/log/mysqld_long_query.log
Definiciones:
- log_slow_queries: se habilita la función de guardar las consultas lentas
- long_query_time: en segundos, indica el tiempo mínimo que tarda una consulta para considerarse lenta
- slow_query_log_file: ruta donde se guardara el registro de las consultas lentas
A partir de ahora se podrá realizar el monitoreo de las consultas que tarden más de los segundos que hayamos indicado en los parametros de configuracion.
Referencia: https://dev.mysql.com/doc/refman/5.7/en/slow-query-log.html