El siguiente ejercicio salió del libro " High Performance MySQL, Second Edition ".
Este es un libro excelente y se lo recomendaría a cualquiera.
La respuesta corta es:
Con el tamaño y las condiciones de su mesa, sin importar el método que elija, creo que potencialmente tendrá una larga espera.
Conversiones de tabla
Hay varias formas de convertir una tabla de un motor de almacenamiento a otro, cada una con ventajas y desventajas.
ALTERAR TABLA
mysql> ALTER TABLE mytable ENGINE = Falcon;
Esta sintaxis funciona para todos los motores de almacenamiento, pero hay un inconveniente: puede llevar mucho tiempo. MySQL realizará una copia fila por fila de su tabla anterior en una tabla nueva. Durante ese tiempo, probablemente usará toda la capacidad de E / S de disco del servidor, y la tabla original se bloqueará de lectura mientras se ejecuta la conversión.
Volcado e importación
Para obtener más control sobre el proceso de conversión, puede optar por volcar primero la tabla en un archivo de texto utilizando la utilidad mysqldump. Una vez que haya volcado la tabla, simplemente puede editar el archivo de volcado para ajustar la instrucción CREATE TABLE que contiene. Asegúrese de cambiar el nombre de la tabla, así como su tipo, porque no puede tener dos tablas con el mismo nombre en la misma base de datos, incluso si son de diferentes tipos, y mysqldump por defecto escribe un comando DROP TABLE antes de CREATE TABLE , por lo que puede perder sus datos si no tiene cuidado.
CREAR y SELECCIONAR
La tercera técnica de conversión es un compromiso entre la velocidad del primer mecanismo y la seguridad del segundo. En lugar de volcar la tabla completa o convertirla de una vez, cree la nueva tabla y use la sintaxis INSERT ... SELECT de MySQL para llenarla, de la siguiente manera:
mysql> CREATE TABLE innodb_table LIKE myisam_table;
mysql> ALTER TABLE innodb_table ENGINE=InnoDB;
mysql> INSERT INTO innodb_table SELECT * FROM myisam_table;
Eso funciona bien si no tiene muchos datos, pero si los tiene, a menudo es más eficiente llenar la tabla de forma incremental, confirmando la transacción entre cada fragmento para que los registros de deshacer no crezcan mucho. Suponiendo que id es la clave principal, ejecute esta consulta repetidamente (utilizando valores más grandes de x e y cada vez) hasta que haya copiado todos los datos en la nueva tabla:
mysql> START TRANSACTION;
mysql> INSERT INTO innodb_table SELECT * FROM myisam_table
-> WHERE id BETWEEN x AND y;
mysql> COMMIT;
Después de hacerlo, se quedará con la tabla original, que puede soltar cuando haya terminado, y la nueva tabla, que ahora está completamente poblada. ¡Tenga cuidado de bloquear la tabla original si es necesario para evitar obtener una copia inconsistente de los datos!