Cambiar las tablas de MyISAM a InnoDB hace que el sistema sea lento
Pregunta
Hola, estoy usando Mysql 5.0.x
Acabo de cambiar muchas tablas de MyISAM a InnoDB
Con las tablas MyISAM, tomó 1 minuto instalar nuestra base de datos Con InnoDB, se tarda unos 15 minutos en instalar la misma base de datos
¿Por qué tarda tanto InnoDB?
¿Qué puedo hacer para acelerar las cosas?
La instalación de la base de datos realiza los siguientes pasos
1) Descarta el esquema
2) Crear el esquema
3) Crear tablas
4) Crear procedimientos almacenados
5) Insertar datos predeterminados
6) Insertar datos mediante procedimiento almacenado
EDITAR:
La inserción de datos predeterminados lleva la mayor parte del tiempo
Solución
Modifique el paso Insertar datos para iniciar una transacción al inicio y confirmarla al final. Obtendrá una mejora, se lo garantizo. (Si tiene muchos datos, es posible que desee dividir la transacción por tabla).
Si su aplicación no utiliza transacciones en absoluto, entonces debe configurar el parámetro innodb_flush_log_at_trx_commit
en 2. Esto le devolverá mucho rendimiento porque seguramente tendrá habilitado el auto_commit y esto genera muchas más transacciones que los parámetros predeterminados de InnoDB están configurados para. Esta configuración evita que se vacíen innecesariamente las memorias intermedias de disco en cada confirmación.
Otros consejos
15 minutos no me parecen excesivos. Después de todo, es un costo único.
No estoy seguro, pero me imagino que parte de la explicación es que la integridad referencial no es gratuita. InnoDB tiene que hacer más trabajo para garantizarlo, por lo que, por supuesto, tomaría más tiempo.
Tal vez su script necesita ser alterado para agregar restricciones después de crear las tablas.
Como dijo duffymo, desactive sus restricciones (índices y claves principales / extranjeras) antes de insertar los datos.
Tal vez debería restaurar algunos índices antes de insertar los datos a través del procedimiento almacenado, si utiliza muchas select declaraciones