Optimizando WordPress: Cambiar de MyISAM a InnoDB en MySQL

Uno de los factores que puede ralentizar un sitio WordPress, especialmente aquellos con gran volumen de tráfico o contenido, es una base de datos sin optimizar. Muchos sitios más antiguos todavía emplean el motor de almacenamiento MyISAM. Sin embargo, con el paso del tiempo, InnoDB ha demostrado ofrecer un rendimiento superior y mayor fiabilidad. Una de sus ventajas clave es que evita el bloqueo completo de las tablas, lo cual mejora significativamente la velocidad de las consultas.

Diferencias clave entre InnoDB y MyISAM

A continuación, te presentamos un resumen de las principales diferencias entre ambos motores de almacenamiento:

  • Bloqueo: InnoDB utiliza bloqueo a nivel de fila, mientras que MyISAM lo hace a nivel de tabla, lo que puede generar cuellos de botella.
  • Integridad referencial: InnoDB admite claves externas y restricciones propias de sistemas RDBMS; MyISAM no lo hace.
  • Transacciones: InnoDB permite el uso de transacciones con la posibilidad de confirmar o deshacer cambios. MyISAM carece de esta funcionalidad.
  • Fiabilidad: InnoDB ofrece mayor estabilidad en operaciones transaccionales.

¿Qué motor usa tu base de datos?

Si estás trabajando con una instalación reciente de WordPress, probablemente ya estés utilizando InnoDB por defecto. No obstante, en instalaciones más antiguas es común encontrar tablas con MyISAM. A veces, incluso, se da una combinación de ambos motores. Para optimizar el rendimiento, es recomendable migrar todas las tablas a InnoDB.

¿Cómo saber qué motor estás usando?

Paso 1:
Ingresa a tu base de datos a través de phpMyAdmin, accesible desde el panel de control (por ejemplo, cPanel).

Paso 2:
Una vez dentro, selecciona la base de datos y revisa la columna llamada “Type” o “Engine” (dependiendo de la versión de phpMyAdmin). Ahí podrás ver qué motor utiliza cada tabla. Si encuentras tablas aún en MyISAM, es un buen momento para considerar su conversión a InnoDB.

Verificar si hay tablas MyISAM en tu base de datos

Una manera rápida de identificar si aún quedan tablas usando el motor MyISAM en una base de datos es ejecutar una consulta específica. Solo tienes que reemplazar 'database' por el nombre real de tu base de datos:

SELECT TABLE_NAME, ENGINE
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'database' AND ENGINE = 'MyISAM';

Cambiar tablas MyISAM a InnoDB desde phpMyAdmin

La conversión de tablas MyISAM a InnoDB se puede realizar de forma sencilla. Por ejemplo, si deseas cambiar la tabla wp_comments, solo debes ejecutar la siguiente instrucción SQL:

ALTER TABLE wp_comments ENGINE=InnoDB;

⚠️ Importante: Antes de modificar cualquier tabla en tu base de datos, es altamente recomendable generar una copia de seguridad completa.

Para evitar incompatibilidades, asegúrate de que estás utilizando MySQL 5.6.4 o una versión posterior, ya que versiones anteriores podrían tener limitaciones, como la falta de soporte para índices de texto completo en InnoDB.

Alternativa visual desde phpMyAdmin

Si prefieres no ejecutar comandos SQL, también puedes hacer la conversión manualmente a través de la interfaz de phpMyAdmin:

  1. Ingresa a tu base de datos desde phpMyAdmin.
  2. Selecciona la tabla que aún utiliza MyISAM.
  3. Haz clic en la pestaña “Operations”.
  4. En la sección de configuración del motor de almacenamiento, selecciona InnoDB en el menú desplegable.
  5. Guarda los cambios.

Convertir MyISAM en InnoDB con WP-CLI

Si tienes acceso SSH a tu WordPress y utilizas a menudo comandos para el manejo y control del sitio, puedes usar este método para transformar las tablas de tu base de datos.

Puedes hacer una copia de seguridad de la base de datos fácilmente con este comando:

wp db export before-engine-change.sql --all-tablespaces --add-drop-table --allow-root

Puedes restaurarla fácilmente con este comando:

wp db import before-engine-change.sql --allow-root

A continuación, un pequeño script en bash para convertir todas las tablas MyISAM de una base de datos WordPress a InnoDB utilizando WP-CLI:

#!/usr/bin/env bash
# Propósito: Convertir tablas MyISAM a InnoDB con WP-CLI

# Crear un array con las tablas MyISAM
WPTABLES=($(wp db query "SHOW TABLE STATUS WHERE Engine = 'MyISAM'" --allow-root --silent --skip-column-names | awk '{ print $1}'))

# Recorrer el array y convertir cada tabla
for WPTABLE in ${WPTABLES[@]}
do
    echo "Convirtiendo ${WPTABLE} a InnoDB"
    wp db query "ALTER TABLE ${WPTABLE} ENGINE=InnoDB" --allow-root
    echo "Tabla ${WPTABLE} convertida a InnoDB"
done

Listo! Ya has modificado tus tablas a InnoDB.

Si te gustó este artículo, suscríbete a nuestro canal de YouTube  para videos tutoriales de Hosting, prácticas y demás. También puede encontrarnos en  X (Twitter)Facebook e Instagram, además de LinkedIn.

Deja un comentario

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