Cuando montamos bases de datos o instalamos scripts de terceros nos podemos encontrar con problemas de rendimiento. Para analizar un poco más en profundidad de dónde pueden venir esos problemas deberíamos activar log slow queries en MySQL para poder revisar que no sea alguna query con la que se nos ha ido la mano a la hora de hacer las consultas.
MySQL slow query log nos va a permitir guardar en un archivo todas las consultas que tarden más de x segundos en devolver los resultados, y de esta forma podemos analizarlas y revisar si es por que no tienen index, o si tenemos alguna forma de solucionarlo.
Una vez resueltas todas podemos mejorar el rendimiento de MySQL simplemente optimizando estas consultas.
Cómo habilitar el log de queries lentas en MySQL
Como MariaDB utiliza la misma estructura para ser compatible de forma nativa, será suficiente con que sigamos los mismos pasos. Necesitaremos incluir dos variables en nuestro archivo my.cnf, una para habilitar el log con la cantidad de segundos que será una consulta larga, y la otra para indicar dónde queremos guardar el log.
long_query_time para MySQL o MariaDB
Para activarlo editaremos el archivo /etc/my.cnf en CentOS ( u otros linux) con nuestro editor de texto preferido, en mi caso:
nano /etc/my.cnf
Ahora simplemente buscamos la sección [mysqld] y dentro de ella (podemos ponerla como última regla antes de la siguiente sección [] o al principio, como prefiramos), incluiremos la siguiente línea:
long_query_time = 5
Con esta variable quedará definido tanto que queremos activar el log de queries lentas, como el tiempo en segundos que queremos considerar como lento, en este caso hemos puesto 5 segundos que es algo aceptable, pero si lo quieres llevar más allá puedes poner menos.
log-slow-queries para MySQL o MariaDB
Ahora dependiendo de la base de datos que tengamos, tendremos que añadir la ubicación donde queremos que se guarde el archivo con el log, para posteriormente poder analizarlo. Este se guardará en tiempo real, por lo que podremos verlo rellenarse en vivo con talif como cualquier otro log. Seguimos editando el archivo my.cnf y agregamos:
en MySQL log-slow-queries=/var/log/mysql/slow_queries.log en MariaDB log-slow-queries=/var/log/mariadb/slow_queries.log
Y ya podemos guardar (en nano ctrl+x y)
Una vez hecho esto por supuesto nos tocará reiniciar el servidor de bases de datos, dependiendo de cual sea tendremos que ejecutar
service mysqld restart o service mariadb restart
Y no nos debería dar ningún error a no ser que no hayamos escrito correctamente la configuración de los parámetros, vigila que una letra de menos hará que no arranque el servicio.
Debería quedarnos algo así por si quedan dudas
[mysqld] *************** mas parametros long_query_time = 5 log-slow-queries=/var/log/mariadb/slow_queries.log *************** mas parametros [mysqldump] *************** mas parametros [mysqld_safe] *************** mas parametros
¿Tienes queries lentas? ¿Cuanto te tardaba la que más y por qué?