On making stuff with code. And making code to do stuff.

Mejorar la velocidad de carga de dumps de MySQL con InnoDB

Un tip rápido: si notas que al importar dumps de bases de datos que utilizan InnoDB la carga es mucho más lenta que en bases de datos con MyISAM, puedes mejorar bastante la velocidad de carga con algunas opciones de mysqldump:

  • En primer lugar, está la opción --opt, que habilita una serie de alternativas que hacen que la importación sea bastante rápida…
  • … pero si por alguna razón debes utilizar alguna opción no predeterminada al crear el dump (en mi caso, era --skip-extended-insert), puedes utilizar --no-autocommit, que hace que la importación sea tan rápida como utilizando MyISAM

¿La explicación?

Como InnoDB es transaccional, lleva un registro de cada operación.

Con la primera alternativa, sólo se ejecuta un INSERT por tabla, por lo que no necesita realizar muchas operaciones de registro.

Con la segunda alternativa, a pesar que se indican muchos INSERT, sólo se confirman los cambios una vez por tabla ya que los bloques de INSERT van rodeados con set autocommit=0; y un único COMMIT al final.

3 responses

  1. […] cierto, si tus tablas son de tipo InnoDB, recuerda también usar la opcion –no-autocommit para mejorar la velocidad de importación del dump […]

  2. […] post Mejorar la velocidad de carga de dumps de MySQL con InnoDB appeared first on […]

  3. […] Puedes utilizar el siguiente comando para generar un “dump” que es más amigable con un sistema de control de versiones (aunque esto quizás no sea la mejor de las ideas) y más rápido de importar: […]