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

¿Fue útil?

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top