MySQL es uno de los manejadores de bases de datos más populares, tanto por su potencial como por ser gratuito. Aún cuando tienen la capacidad de manejar grandes bases de datos, es normal que debido al uso, llegue a tener tablas fragmentadas por la cantidad de escrituras y actualizaciones que reciben las tablas.
Esto puede ser resuelto desde los gestores gráficos de MySql (como phpMyAdmin), pero depende del encargado de la adminstración de la base de datos, que con frecuencia entre a revisar las tablas y en su caso optimizarla para eliminar esta fragmentación de las tablas. Con el tiempo, es muy probable que un día u otro esta actividad quede olvidada por el administrador de base de datos.
El optimizar una tabla fragmentada, ayuda al sistema gestor de bases de datos a encontrar la información de cada tabla de forma más rápida, por lo que realizar este proceso con frecuencia ayudará a que no disminuya por este motivo, es decir la respuesa que dará la base de datos a las consultas será más eficiente.
También es posible automatizar esta optimización de las bases de datos de mysql, para que de manera cotidiana se realice esta tarea. Esta automatización se logra mediante el uso de los crontabs (en Unix, Linux, FreeBSD, etc.) y el comando mysqlcheck.
El crontab deberá quedar programado de la siguiente manera:
0 3 * * * /usr/local/mysql/bin/mysqlcheck -ao -–auto-repair -u root -p[password] > /dev/null
Este cron se ejecutará todos los días a las 3 de la mañana, realiza una optimización y repación de las tablas con el comando myqslcheck que se encuentra en $MYSQLDIR/bin, normalmente $MYSQLDIR es /usr/local/mysql o /usr/mysql. Puedes localizar el mysqlcheck con el comando find y poner la ruta correcta de acuerdo a la instalación de tu servidor.
Los argumentos le indican lo siguiente:
- -a analizar las tablas,
- -o optimizar las tablas,
- --auto-repair si la tabla analizada esta corrupta, la repara automáticamente,
- -u root el nombre de usuario de la base de datos, en este caso root para poder acceder a todas las bases de datos,
- -p[password] la contraseña del usuario, nota que no hay espacio entre el argumento y la contraseña.
Nota: Si requiere más información del parámetro mysqlcheck puedes ejecutar el comando sin ningún argumento para desplegar la ayuda o acceder directamente a la documentación de mysqlcheck (En inglés).