Reorganizar y optimizar el espacio de almacenamiento en una base de datos MySQL

Con nuestras tarifas actuales dispone de hasta 1 Gigabyte de espacio de almacenamiento para cada base de datos MySQL. Si se supera este límite, el acceso de escritura a la base de datos se bloquea hasta que vuelva a haber espacio disponible. En este artículo le explicamos cómo optimizar su base de datos MySQL para evitar el bloqueo por falta de espacio de almacenamiento.

Un posible causante del espacio de almacenamiento excesivamente lleno de su base de datos MySQL podría estar vinculado con cambios frecuentes en las tablas. Con cada cambio se ocupa más espacio, aunque en realidad no se haya incrementado el volumen como tal. Este espacio se puede reorganizar y optimizar.

En su cuenta IONOS o en PHPmyadmin podrá consultar el espacio de almacenamiento en uso de su base de datos MySQL. Recuerde que PHPmyadmin muestra un valor incorrecto cuando se utilizan tablas InnoDB en la base de datos. Por eso, es importante que siempre consulte el valor exacto en su cuenta IONOS. Más adelante se explica cómo hacerlo.

Notas
  • No es posible aumentar la capacidad de almacenamiento máxima de la base de datos de 1 Gigabyte.
  • Si ha superado el espacio de almacenamiento máximo, deberá dirigirse al servicio de Atención al Cliente para liberar espacio en su base de datos. Solo si quisiera reorganizar y optimizar sus tablas InnoDB, podríaá hacerlo usted mismo con el comando ALTER TABLE.

Liberar espacio de almacenamiento

Para optimizar su base de datos a través de su cuenta IONOS, siga los siguientes pasos:

  • En su cuenta IONOS, vaya a la sección Hosting y seleccione el contrato MySQL que desee.

    Acceder y abrir la sección HostingAbrir la sección Hosting

  • A continuación, haga clic en Administrar. Se mostrará un resumen de las bases de datos disponibles.
  • Haga clic en Abrir en la fila correspondiente a la base de datos deseada. El programa de administración phpMyAdmin se abre en una nueva ventana.
  • Haga clic en el nombre de la base de datos en la parte de la izquierda. En la vista detallada se muestran todas las tablas de esta base de datos.
  • Seleccione SQL en la barra de menús.
  • Introduzca el siguiente comando en la ventana SQL: SELECT concat('optimize table `', table_schema, '`.`', NOMBRE_TABLA, '`;')
    FROM information_schema.tables
    WHERE table_schema = database()
      AND data_free / (data_length + index_length + data_free) > 0.6
    ORDER BY data_free DESC;
    Se generarán comandos SQL con los que podrá liberar espacio. Introduzca los siguientes comandos de optimización en la ventana SQL. dbname se sustituirá por el nombre de su base de datos.
    +-------------------------------------------------------------------+
    | concat('optimize table `', table_schema, '`.`', table_name, '`;') |
    +-------------------------------------------------------------------+
    | optimize table `dbname`.`attemptoptions`;                         |
    | optimize table `dbname`.`attemptsimple_login_log`;                |
    | optimize table `dbname`.`attemptposts`;                           |
    | optimize table `dbname`.`attemptpostmeta`;                        |
    +-------------------------------------------------------------------+
    4 rows in set (0.01 sec)
    Tenga en cuenta que solo podrá llevar a cabo esta optimización si su base de datos no está bloqueada.
  • Opcional: Para las tablas InnoDB que ya han sobrepasado el Gigabyte de almacenamiento puede introducir el siguiente comando SQL:
    SELECT concat("ALTER TABLE `", table_schema, "`.`", NOMBRE_TABLA, "` ENGINE=InnoDB;")
    FROM information_schema.tables
    WHERE table_schema = database()
      AND ENGINE = 'InnoDB'
      AND data_free / (data_length + index_length + data_free) > 0.6
    ORDER BY data_free DESC;
    Se generarán comandos SQL con los que podrá liberar espacio. Introduzca los comandos ALTER TABLE en la ventana SQL. dbname se sustituirá por el nombre de su base de datos.
    +------------------------------------------------------------------------------+
    | concat('ALTER TABLE `', table_schema, '`.`', table_name, '` ENGINE INNODB;') |
    +------------------------------------------------------------------------------+
    | ALTER TABLE `dbname`.`attemptoptions` ENGINE INNODB;                         |
    | ALTER TABLE `dbname`.`attemptsimple_login_log` ENGINE INNODB;                |
    | ALTER TABLE `dbname`.`attemptposts` ENGINE INNODB;                           |
    | ALTER TABLE `dbname`.`attemptpostmeta` ENGINE INNODB;                        |
    +------------------------------------------------------------------------------+
    4 rows in set (0.60 sec)
Nota

El espacio de almacenamiento que acaba de liberar tardará un tiempo en verse reflejado en su base de datos MySQL. Normalmente, la base de datos se puede volver a usar al día siguiente.

Automatizar la optimización

Puede automatizar la optimización de su base de datos con un trabajo cron. Para obtener más información al respecto, consulte la sección correspondiente en nuestro Centro de Ayuda.