Tema 7 · Motores de BD

Motores de Almacenamiento: InnoDB (Transaccional) vs MyISAM

Comprende por qué InnoDB es el motor moderno obligatorio para aplicaciones web y cómo convertir tablas heredadas MyISAM en phpMyAdmin.

¿Qué es un Motor de Almacenamiento (Storage Engine)?

En MySQL y MariaDB, el motor de almacenamiento es el componente de software interno responsable de guardar físicamente los datos en el disco duro, gestionar los índices y manejar los bloqueos y transacciones.

En la pantalla de creación de tablas de phpMyAdmin o en la pestaña Operaciones, puedes elegir qué motor utilizará cada tabla. Los dos más conocidos son InnoDB y MyISAM.

Comparativa Técnica: InnoDB vs MyISAM

Característica InnoDB (Estándar Moderno) MyISAM (Heredado / Obsoleto)
Transacciones ACID Sí (COMMIT y ROLLBACK) No (Cualquier fallo a mitad deja datos corruptos)
Claves Foráneas (Foreign Keys) Soporte Nativo Completo No (Ignora las restricciones silenciosamente)
Nivel de Bloqueo A nivel de fila (Row-level locking): Miles de usuarios pueden escribir y leer registros diferentes al mismo tiempo. A nivel de tabla (Table-level locking): Si un usuario escribe una fila, toda la tabla queda congelada para los demás.
Recuperación ante Caídas Excelente (Usa registros de transacciones para autorepararse tras apagones). Mala (Frecuentemente arroja error de tabla corrupta requiriendo REPAIR TABLE).

Cómo Convertir una Tabla Antigua a InnoDB en phpMyAdmin

Si importaste una base de datos antigua que todavía usa MyISAM:

  1. Haz clic sobre la tabla en el panel lateral izquierdo.
  2. En la barra superior, ve a la pestaña Operaciones.
  3. En el recuadro Opciones de la tabla, localiza el menú desplegable Motor de almacenamiento (Storage Engine).
  4. Cámbialo de MyISAM a InnoDB.
  5. Haz clic en el botón Continuar en la parte inferior de ese recuadro. ¡phpMyAdmin migrará la estructura y los datos al nuevo motor sin perder registros!

⚡ Sentencia SQL para Convertir Motor de Almacenamiento

Instrucción ALTER TABLE para migrar cualquier tabla a InnoDB:

migrar-a-innodb.sql
Solo lectura
-- Convertir una tabla existente a InnoDB
ALTER TABLE `pedidos` ENGINE = InnoDB;

-- Consultar qué motor utiliza cada tabla en la base de datos
SELECT 
  TABLE_NAME, 
  ENGINE, 
  TABLE_ROWS, 
  DATA_LENGTH, 
  INDEX_LENGTH 
FROM information_schema.TABLES 
WHERE TABLE_SCHEMA = 'tienda_online';
🧠
Mini-Quiz de Retención
Comprueba tu comprensión antes de pasar a la siguiente lección
1 Pregunta
Pregunta 1
¿Cuál es la razón principal por la que NUNCA debes usar el motor MyISAM en aplicaciones de comercio electrónico donde existen carritos de compras o pagos?
🦉
¿Tienes dudas con este tema?
Sócrates AI puede darte analogías y explicarte este código paso a paso.

🚀 ¿Quieres dominar Manual de phpMyAdmin: Gestión de Bases de Datos y crear proyectos reales?

Aprende arquitectura limpia, desarrollo web moderno, buenas prácticas y despliegue en producción con nuestro Bootcamp Fullstack Developer con mentorías en vivo.

🏛️ Autoría y Propiedad Intelectual: Obra educativa original de David Amador para Kilopolis Academia (Solucionáticos), estructurada sobre las especificaciones y estándares abiertos del W3C, el estándar vivo de WHATWG y la documentación oficial de código abierto. © Todos los derechos reservados.