Tenho um acompanhamento da minha pergunta anterior sobre velocidade de importação com o Inno-Tables (surpresa!).
Cenário
Tento importar algum grande * despejo de banco de dados na minha máquina de desenvolvimento local em tempo razoável. Temos muitos KEY
s anexados às tabelas que acabaram sendo um gargalo, mas ainda são importantes para o nosso sistema ativo.
Minha abordagem depois de fazer a pergunta acima foi excluir KEY ...
instruções do dump, importar e adicionar novamente chaves.
No entanto, muitas vezes me vejo editando um despejo atual para importá-lo localmente e me deparei com esses "comentários" engraçados (as disable/enable keys
linhas)
--
-- Dumping data for table `monster`
--
LOCK TABLES `monster` WRITE;
/*!40000 ALTER TABLE `monster` DISABLE KEYS */;
INSERT … INSERT … INSERT
/*!40000 ALTER TABLE `monster` ENABLE KEYS */;
UNLOCK TABLES;
Mas, na verdade, esses "comentários" são condicionais MySql-Statements
Isso foi novidade para mim, mas ok, dado o formulário de saída, mysql --version
tudo parece bem para mim:
mysql Ver 14.14 Distrib 5.5.38, for debian-linux-gnu (x86_64) using readline 6.3
O que eu assumo
A mesa está trancada (tudo bem, sou só eu no dev mashine). Em seguida, as chaves definidas no esquema da tabela são desativadas, os dados são importados, as chaves são ativadas.
Portanto, durante a fase de "inserção de dados", não deve haver desperdício de tempo nas chaves, mas sim examinadas após a inserção de todos os dados.
Eu estaria pensando que esse é o mesmo comportamento como se eu KEY 'foo' (foo)'
excluísse todas as linhas do despejo, importe o despejo e execute um script ADD KEY 'foo' ...
posteriormente.
O que eu observo
É muito mais rápido excluir manualmente as chaves, importar e adicionar novamente chaves, depois confiar em DISABLE KEYS
instruções condicionais criadas por mim.mysqldump
Edição manual de dump + importação do mysql + adição de chaves = 15 + 8 + 8 ≈ 30min
Importação simples do mysql: desistiu (estou apenas sendo pago por 8 horas / dia> :))
Não posso deixar de pensar que estou perdendo algo muito fundamental aqui (ou o banco de dados está me vasculhando).
mysqldump --innodb-optimize-keys
do Percona percona.com/doc/percona-server/5.5/management/… Longo prazo: pare de usar o mysqldump e use mydumper ou xtrabackup.