Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Acelerando a conversão de MyISAM para InnoDB

  • Configurando um innodb_buffer_pool_size grande (2 GB ou mais)
  • pré-leia seus antigos arquivos de dados/índice do myisam usando comandos shell
  • aumentar innodb_log_file_size (256 MB)
  • Faça a alter table em X threads paralelos, onde X é a quantidade de núcleos de CPU em seu servidor
  • outros pequenos ajustes apenas para conversão (innodb_doublewrite=0, innodb_flush_log_at_trx_commit=0)

definir innodb_buffer_pool_size o mais alto possível é a maneira típica de acelerar a criação de tabelas innodb - seu conjunto de dados parece caber dentro de um pool de buffer innodb de 2 GB, portanto, qualquer servidor decente de 64 bits deve permitir isso. alter table type=innodb também é mais rápido que a solução dump+reimport e é fácil de executar em paralelo.

Certifique-se também de aumentar o innodb_log_file_size do padrão de 5 MB para 128 ou 256 MB. Cuidado com isso, e ele precisa de um desligamento limpo + apagando o antigo ib_logfile*.

Se o seu servidor tiver algo como 8 GB de ram e você executar uma versão de 64 bits do mysql, sugiro um innodb_buffer_pool de 2 GB, e você pode até pré-ler os arquivos MYD e MYI antigos antes de fechar para o tempo de inatividade, para que eles fiquem no Cache de página do SO quando o trabalho real começa.

Se você também optar por pequenos ajustes, lembre-se de desfazê-los após a conversão (outro pequeno tempo de inatividade) para ter seus dados seguros, mas duvido que valha a pena para um conjunto de dados tão pequeno.

Boa sorte.