Las consultas lentas pueden afectar el rendimiento de la base de datos, afecta el rendimiento del servidor y el rendimiento general de la aplicación
En Mariadb o Mysql, es posible registrar cuáles son las consultas a la base de datos que exceden un límite de tiempo predefinido. Esto simplifica enormemente la tarea de encontrar consultas ineficientes o que requieren mucho tiempo.
Existen dos métodos para habilitar el registro. La primera opción dentro del entorno de mysql, el cual tiene la ventaja de no ser necesario reinicio de servicio, pero no es soportado por versiones antiguas del software. El segundo, es modificar el archivo de configuración, y es soportado en la mayoría de las versiones.
Habilitar de manera temporal (Entorno Mysql)
1. Hacer loging como roor en mysql
mysql -u root –p
2. Habilitar el registro
SET GLOBAL slow_query_log = 'ON';
3. Establecer la cantidad de segundos. Todas las consultas que tarden más a este valor serán registradas. En este caso 3 segundos,
SET GLOBAL long_query_time = 3;
4. Establecer la ruta donde se escribirá el registro El usuario de base de datos debe tener permiso de escritura en el directorio.
SET GLOBAL slow_query_log_file = '/tmp/slow-query.log;
5. Verificación. Se puede ejecutar el comando sleep, con argumento mayor al establecido.
SELECT SLEEP(4);
6. Deshabilitar el registro con el comando:
SET GLOBAL slow_query_log = 'OFF';
Habilitar de manera permanente (Configuración).
1. Editar el archivo de configuración y agregar estas líneas en la sección [mysqld]
[mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock symbolic-links=0 slow_query_log = 1 log-slow-queries = /var/log/mariadb/mysql-slow.log long_query_time = 1
2. Reiniciar el servicio.
systemctl restart mariadb.service
3. Probar ejecutado el sql.
SELECT SLEEP(4);
4. Consultar el archivo.