Importante: No se deben convertir las tablas del sistema en la
        base de datos mysql (por ejemplo,
        user o host) al tipo
        InnoDB. Las tablas del sistema siempre deben
        ser del tipo MyISAM.
      
        Si se desea que todas las tablas que no sean de sistema se creen
        como tablas InnoDB, simplemente debe
        agregarse la línea default-table-type=innodb
        a la sección [mysqld] del fichero
        my.cnf o my.ini.
      
        InnoDB no posee una optimización especial
        para la creación separada de índices en la misma forma que la
        tiene el motor de almacenamiento MyISAM. Por
        lo tanto, no hay beneficio en exportar e importar la tabla y
        crear los índices posteriormente. La manera más rápida de
        cambiar una tabla al motor InnoDB es hacer
        las inserciones directamente en una tabla
        InnoDB. Es decir, utilizar ALTER
        TABLE ... ENGINE=INNODB, o crear una tabla
        InnoDB vacía con idénticas definiciones e
        insertar las filas con INSERT INTO ... SELECT * FROM
        ....
      
        Si se tienen restricciones UNIQUE sobre
        claves secundarias, se puede acelerar la importación de una
        tabla desactivando temporalmente la verificación de unicidad
        durante la sesión de importación: SET
        UNIQUE_CHECKS=0;. Para tablas grandes, esto ahorra
        gran cantidad de operaciones de E/S en disco, debido a que
        InnoDB puede emplear su buffer de inserciones
        para grabar registros de índices secundarios en lote.
      
Para obtener un mejor control sobre el proceso de inserción, podría ser mejor llenar la tablas grandes por partes:
INSERT INTO nuevatabla SELECT * FROM viejatabla WHERE clave > valor1 AND clave <= valor2;
Luego de que todos los registros se hayan insertado, se pueden renombrar las tablas.
        Durante la conversión de tablas grandes, se puede reducir la
        cantidad de operaciones de E/S en disco incrementando el tamaño
        del pool de buffer de InnoDB. No debe usarse
        más del 80% de la memoria física. También pueden aumentarse
        los tamaños de los ficheros de registro (log) de
        InnoDB.
      
        Hay que asegurarse de no llenar completamente el espacio de
        tablas: las tablas InnoDB necesitan mucho
        más espacio que las tablas MyISAM. Si una
        sentencia ALTER TABLE se queda sin espacio,
        realizará una cancelación (rollback), y esto puede tomar horas
        si lo hace sobre el disco. Para las inserciones,
        InnoDB emplea el buffer de inserción para
        combinar en lotes los registros secundarios de índices con los
        índices. Esto ahorra gran cantidad de operaciones de E/S en
        disco. Durante la cancelación no se emplea ese mecanismo, de
        modo que puede llevar más de 30 veces el tiempo insumido por la
        inserción.
      
Si se produjera una de estas cancelaciones fuera de control, sino se tienen datos valiosos en la base de datos, puede ser preferible matar el proceso de la base de datos en lugar de esperar que se completen millones de operaciones de E/S en disco. Para el procedimiento completo, consulte Sección 15.8.1, “Forzar una recuperación”.
Ésta es una traducción del manual de referencia de MySQL, que puede encontrarse en dev.mysql.com. El manual de referencia original de MySQL está escrito en inglés, y esta traducción no necesariamente está tan actualizada como la versión original. Para cualquier sugerencia sobre la traducción y para señalar errores de cualquier tipo, no dude en dirigirse a mysql-es@vespito.com.

