Optimizar tablas MySQL desde PHP

Optimiza tablas MySQL desde PHP

En algunas ocasiones, el rendimiento de nuestra bases de datos se reduce con el uso. Una de las principales causas suele ser problemas en los indices especialmente en bases de datos Innodb. Vamos a ver como podemos el rendimiento de nuestras bases de datos MySQL desde PHP.

El problema

No podemos olvidarnos de que los servidores en los que se ejecutan nuestras bases de datos son ordenadores (o grupos de estos) y sufren los mismos problemas que cualquier ordenador personal. Si nuestra aplicación inserta, actualiza o elimina datos constantemente puede que estemos sobrecargando los indices al fragmentar los datos en el disco duro. Esto hace que al recorrer los indice so leer de ellos deba saltar los espacios en blanco sobrantes.

Esto es especialmente problemático cuando usamos bases de datos Innodb y realmente problemático con indices FULLSEARCH o que incluyan cadenas de texto.

Solución

Aunque podemos realizar el proceso a mano, si nuestra base de datos requiere de optimizaciones continuas perderemos mucho tiempo lo que no es nada rentable. En dicho caso, la mejor opción es automatizar el proceso creando una función que realice la optimización automaticamente. Podemos usar una cron que ejecute un fichero como el siguiente:

Notese que en este caso estamos optimizando todas las tablas de la base de datos. Obviamente no es lo más eficiente pues seguramente la mayoría de las tablas no lo van a necesitar. Si sabemos de antemano cuales son las tablas más susceptibles a este problema, podemos cambiar el script para que en lugar de leer las tablas y optimizarlas parta de una lista de tablas predefinidas. De este modo podemos configurar la optimización a nuestro gusto y aplicarla solo sobre las tablas necesarias.

Para más información sobre OPTIMIZE TABLE en mysql.com.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.