Alterando tabelas de MyISAM para InnoDB tornam o sistema lento
Pergunta
Oi Estou usando o MySQL 5.0.x
Eu tenho apenas mudou um monte das tabelas de MyISAM para InnoDB
Com as tabelas MyISAM que demorou cerca de 1 minuto para instalar nosso banco de dados Com o InnoDB leva cerca de 15 minutos para instalar o mesmo banco de dados
Por que o InnoDB levar tanto tempo?
O que posso fazer para acelerar as coisas?
O banco de dados instalar faz as seguintes etapas
1) Gotas o esquema
2) Criar o esquema
3) Criar tabelas
4) Criar procedimentos armazenados
5) de dados padrão Inserir
6) Inserir dados via procedimento armazenado
EDIT:
A inserção de dados padrão leva a maior parte do tempo
Solução
Modificar a etapa Inserir dados para iniciar uma transação no início e cometê-lo no final. Você vai ter uma melhora, eu garanto. (Se você tem um monte de dados, você pode querer quebrar a transação até por tabela.)
Se você aplicativo não usar transações em tudo, então você deve definir o innodb_flush_log_at_trx_commit
paramater a 2. Isto lhe dará um monte de volta desempenho porque você quase certamente terá auto_commit habilitado e isso gera muito mais transações do que padrão do InnoDB parâmetros são configurados para. Esta configuração pára-lo desnecessariamente liberar os buffers de disco em cada submissão.
Outras dicas
15 minutos não parece excessiva para mim. Afinal de contas, é um custo único.
Eu não estou certo, mas eu poderia imaginar que parte da explicação é a integridade referencial não é livre. InnoDB tem que fazer mais trabalho para garantir isso, então é claro que seria necessário mais tempo.
Talvez suas necessidades de script para ser alterado para adicionar restrições após as tabelas são criadas.
Como duffymo disse, desativar suas limitações (índices e Estrangeira / chaves primárias) antes de inserir os dados.
Talvez você deve restaurar alguns índices antes dos dados inseridos através de procedimento armazenado, se o seu uso um monte de selecione declarações