sql >> Base de Datos >  >> RDS >> Mysql

Acelerar la conversión de MyISAM a InnoDB

  • Configurar un innodb_buffer_pool_size grande (2 GB o más)
  • leer previamente los archivos de datos/índices de myisam usando los comandos de shell
  • aumentar innodb_log_file_size (256 MB)
  • Haga la tabla de modificación en X subprocesos paralelos, donde X es la cantidad de núcleos de CPU en su servidor
  • otros ajustes menores solo para conversión (innodb_doublewrite=0, innodb_flush_log_at_trx_commit=0)

establecer innodb_buffer_pool_size lo más alto posible es la forma típica de acelerar la creación de tablas de innodb:parece que su conjunto de datos podría caber dentro de un grupo de búfer de innodb de 2 GB, por lo que cualquier servidor decente de 64 bits debería permitir eso. alter table type=innodb también es más rápido que la solución dump+reimport, y es fácil de ejecutar en paralelo.

También asegúrese de haber aumentado innodb_log_file_size del valor predeterminado de 5 Mb a 128 o 256 MB. Cuidado con eso, y necesita un apagado limpio + borrar el antiguo ib_logfile*.

Si su servidor tiene algo así como 8 GB de RAM y ejecuta una versión de mysql de 64 bits, sugeriría un innodb_buffer_pool de 2 GB, e incluso puede leer previamente los archivos MYD y MYI antiguos antes de cerrar por tiempo de inactividad, para que estén en el caché de la página del sistema operativo cuando comienza el trabajo real.

Si también opta por los ajustes menores, tenga en cuenta que debe deshacerlos después de la conversión (otro pequeño tiempo de inactividad) para tener sus datos seguros, aunque dudo que valga la pena para un conjunto de datos tan pequeño.

Buena suerte.