¿Cómo optimizar 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.

Ver el tamaño de tu base de datos

Antes de optimizar tu base de datos, debes verificar el tamaño actual de la misma. Puedes verificar el tamaño de tu base de datos usando phpMyAdmin o SSH.

Usando phpMyAdmin

Usando las instrucciones a continuación, puedes ver el tamaño de tu base de datos dentro de phpMyAdmin.

  1. Haz clic en el nombre de la base de datos cuyo tamaño estás verificando en el menú del lado izquierdo.
    phpMyAdmin database size
  2. En el extremo derecho de la fila inferior del panel principal, puedes ver el tamaño completo de la base de datos.

Usando SSH

También puedes usar SSH para conectarte e iniciar sesión en tu base de datos y seguir los pasos a continuación para encontrar el tamaño de ella. Revisa el siguiente artículo para obtener instrucciones sobre cómo conectarte a través de SSH:

Corre la siguiente consulta para ver el tamaño de la base de datos en MB (no reemplaces ningún texto ni agregues saltos de línea):

      SELECT table_schema "database", sum(data_length + index_length)/1024/1024 "size in MB" FROM information_schema.TABLES GROUP BY table_schema;
      

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.

  • Al final de la lista de la tabla, haz clic en el menú desplegable With selected.
    02 Optimizing Database.fw.png
  • 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 cron job 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]$ mysqlcheck -h HOSTNAME -u USERNAME -p -o DATABASE

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

  • USERNAME – el usuario de la base de datos.
  • HOSTNAME – el hostname de la base de datos que configuras y está activo.
  • DATABASE – el nombre de la base de datos en la cual estás coriendo este comando.

-p te pedirá que ingreses tu contraseña de base de datos, que evitará que la contraseña se guarde en la historia de Bash de tu usuario SSH.

Puedes ver la siguiente nota en la salida del comando:

Table does not support optimize, doing recreate + analyze instead

Este mensaje ocurre cuando el motor de almacenamiento INNODB de MySQL realiza un conjunto diferente de operaciones para optimizar la tabla y puede ser ignorada de manera segura.

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

>> results.txt

Usar un cron job para optimizar

También puedes hacer una limpieza general a través de un script de shell y/o un cron job usando mysqlcheck que verifica, repara y optimiza las tablas. Es una buena idea ejecutar un cron job mensual para hacer esto por ti. El cron job 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 correr 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?