MOTOR MERGE EN MYSQL Y MARIADB: QUÉ ES Y CÓMO COMBINAR TABLAS MYISAM
MRG_MYISAM, también conocido como motor MERGE), es un motor de almacenamiento especial de MySQL y MariaDB. Se suele usar para manejar tablas muy grandes dividiéndolas en partes más pequeñas y manejables. MRG_MYISAM solo se sigue usando en sistemas antiguos o en casos muy específicos donde se necesita compatibilidad con MyISAM y particionamiento manual.¿Qué es exactamente?
Es un motor virtual que permite unir varias tablas MyISAM idénticas y tratarlas como si fueran una sola tabla grande.- No almacena datos por sí mismo.
- Solo actúa como una “vista” o unión lógica de otras tablas que deben ser todas MyISAM.
- Las tablas subyacentes deben tener exactamente la misma estructura (mismas columnas, mismos tipos de datos y orden).
Ventajas
- Se puede insertar, actualizar o borrar en la tabla MERGE y se propaga a las tablas reales.
- Las consultas (SELECT) se ejecutan sobre todas las tablas unidas como si fuera una sola.
- Facilita el mantenimiento: se puede borrar o archivar tablas antiguas fácilmente sin afectar el resto.
Desventajas
- Solo funciona con tablas MyISAM.
- No soporta transacciones, claves foráneas ni integridad referencial.
- Es menos seguro y más antiguo.
- Su uso está desaconsejado en MySQ moderno.
Cómo crear una tabla MRG_MYISAM
-- Tablas base (todas MyISAM)
CREATE TABLE logs_2025_01 ENGINE=MyISAM AS SELECT * FROM logs WHERE 1=0;
CREATE TABLE logs_2025_02 ENGINE=MyISAM AS SELECT * FROM logs WHERE 1=0;
-- ... más tablas
-- Tabla MERGE que las une
CREATE TABLE logs_total (
id INT,
fecha DATETIME,
mensaje TEXT,
-- ... resto de columnas iguales
) ENGINE=MRG_MYISAM
UNION=(logs_2025_01, logs_2025_02, logs_2025_03)
INSERT_METHOD=LAST;
- "UNION=" → lista las tablas que se van a unir.
- "INSERT_METHOD=LAST" → los INSERT se hacen siempre en la última tabla de la lista.