Un par de trucos de MySQL

El primero de los trucos consiste en detectar aquellas consultas que se ejecutan en nuestra base de datos MySQL sin haber definido un indice. Estas consultas acaban produciendo problemas de rendimiento.

Para ello se usa el parámetro log_queries_not_using_indixes.

mysql> set global log_queries_not_using_indixes=1;
Query OK, 0 rows affected (0.00 sec)

Este parámetro se puede habilitar y deshabilitar en caliente y además de mostrarnos las consultas definidas sin índices también nos muestra aquellas consultas del tipo "SELECT * FROM tabla", es decir, las que obtienen todos los resultados.

Bien, pero ¿donde se ven cuales son esas consultas? La respuesta la tienes en el fichero my.cnf (en /etc/my.cnf en RHEL y Centos o bien en /etc/mysql/my.cnf en Debian y derivadas). En ese fichero localiza la sección mysqld.

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

La configuración mostrada nos guardará en el archivo /var/log/mysql/mysql-slow.log aquellas consultas que tarden más de 1 segundo en ejecutarse.

El segundo de los trucos consiste en utilizar el comando mysql_upgrade después de una actualización de MySQL. Este comando examina todas las tablas de todas las base de datos buscando incompatibilidades con la versión actual de MySQL. mysql_upgrade también actualiza las tablas del sistema para que puedas coger ventaja de los nuevos privilegios o características añadidas en la nueva versión recién instalada.

Para ejecutarlo debemos de asegurarnos que la base de datos está levantada y ejecutándose y en una shell invocamos el comando:

[djlongo@djlongo ~]$ mysql_upgrade

En resumen, ejecuta mysql_upgrade después de un apt-get upgrade o de un yum update en el que se actualice MySQL. Si no lo haces el sistema de base de datos se comportará de forma extraña, más cuanto más grande sea la diferencia entre versiones.