¿Cómo optimizo mi base de datos?

Generalidades

Optimizar las tablas de tu base de datos MySQL es una forma de hacer mejoras en tu sitio web. La función de optimización reorganiza los datos de la tabla y el índice, lo que reduce el espacio y mejora la eficiencia de I/O (Entrada y Salida).

Esta guía describe cómo optimizar tus tablas a través de phpMyAdmin.

Acceder a tu base de datos

Para obtener instrucciones detalladas sobre cómo iniciar sesión en tu base de datos a través de phpMyAdmin, visita el siguiente artículo:

Una vez que hayas iniciado sesión, continúa con los pasos a continuación.

Optimizar tu base de datos

En el lado izquierdo de phpMyAdmin, verás una lista de bases de datos:

  1. Selecciona tu base de datos de la lista.
    En el panel central, aparece una lista de tus tablas:
    01 Optimizing Database.fw.png
  2. Mira la columna Overhead a la derecha: si ves algún valor numérico, esas tablas se pueden optimizar. En el ejemplo anterior, solo se han seleccionado esas tablas.

    También puedes hacer clic en el enlace 'Check All' en la parte inferior izquierda que selecciona todas las tablas.

  3. Al final de la lista de la tabla, haz clic en el menú desplegable 'With selected'.
    02 Optimizing Database.fw.png
  4. En el menú desplegable, selecciona ‘Optimize table’.
    La optimización puede tardar un tiempo en completarse dependiendo del tamaño de la base de datos. Una vez que se completa, la página muestra la consulta que se ejecutó junto con un mensaje de éxito:
    03 Optimizing Database.fw.png

    Puedes ignorar con seguridad el mensaje “Table does not support optimize, doing recreate + analyze instead” ya que es solo informativo.

Reparar tablas

Además de optimizar una tabla, también puedes 'reparar' una tabla. Sigue todos los pasos mencionados anteriormente. En el paso 3, elige 'Repair table' (reparar tabla) en el menú desplegable.

01 Optimizing Database repair table.fw.png

Las dos opciones son similares pero se usan en diferentes circunstancias:

  • Repair Table - Reparar tabla: repara una tabla posiblemente dañada. Esto se ejecuta generalmente si recibes errores de la base de datos. Esto se puede ejecutar a través de phpMyAdmin o configurarlo como un trabajo cron para que se ejecute de manera rutinaria.
  • Optimize Table - Optimizar tabla: simplemente reorganiza el almacenamiento físico para los datos de la tabla y los índices asociados. Esta función mejora el acceso a la tabla ya que parte de su función es reducir el espacio de almacenamiento.

Optimizar via SSH

A veces, ejecutar una optimización a través de phpMyAdmin tiende a fallar y la página finalmente se agota. Esto posiblemente se deba a que la base de datos es demasiado grande para que phpMyAdmin pueda manejarla. La alternativa es optimizar a través de SSH. Como usuario de shell, puedes acceder vía SSH en tu dominio y ejecutar el siguiente comando, que es la misma función que se ejecuta en phpMyAdmin:

[server]$ mysql -u username -ppassword -h hostname databasename -e "show tables" | grep -v Tables_in | grep -v "+" | gawk '{print "optimize table " $1 ";"}' | mysql -u username -ppassword -h hostname databasename 

Reemplaza las variables en el comando arriba con la información correspondiente de tu base de datos:

  • username – nombre de usuario de la base de datos
  • password – contraseña del usuario
  • hostname – nombre de host de la base de datos que configuraste y está activo
  • databasename – nombre de la base de datos en la que estás ejecutando el comando

Puedes generar el registro del comando en un archivo para verlo agregando lo siguiente al final del comando:

>> results.txt

Usar un trabajo cron para optimizar

También puedes hacer una limpieza general a través de un script de shell y/o un trabajo cron usando mysqlcheck que verifica, repara y optimiza las tablas. Es una buena idea ejecutar un cron job mensual para hacer esto por ti. El trabajo cron podría verse así:

#!/bin/sh
/usr/bin/mysqlcheck -o -v -u USER -p PASSWORD -h MYSQL.EXAMPLE.COM DATABASENAME;

Reemplaza los elementos en mayúsculas con las credenciales de tu base de datos.

Reparar via SSH

También puedes ejecutar un comando para reparar una tabla en lugar de optimizarla:

[server]$ mysql -u username -ppassword -h hostname databasename -e "show tables" | grep -v Tables_in | grep -v "+" | gawk '{print "repair table " $1 ";"}' | mysql -u username -ppassword -h hostname databasename 

Ver también

¿Este artículo ha respondido sus preguntas?

Última actualización el PST.

¿Aún no encuentra lo que busca?