Pergunta

Existem técnicas documentadas para acelerar despejos e importações do MySQL?

Isso incluiria configurações my.cnf, uso de ramdisks, etc.

Procurando apenas técnicas documentadas, de preferência com benchmarks que mostrem potencial aceleração.

Foi útil?

Solução

http://www.maatkit.org/ tem um mk-parallel-dump e mk-parallel-restore

Se você deseja um mysqldump multithread, não deseje mais.Esta ferramenta despeja tabelas MySQL em paralelo.É um mysqldump muito mais inteligente que pode atuar como um wrapper para o mysqldump (com comportamento padrão sensato) ou como um wrapper em torno de SELECT INTO OUTFILE.Ele foi projetado para aplicações de alto desempenho em tamanhos de dados muito grandes, onde a velocidade é muito importante.Ele aproveita várias CPUs e discos para despejar seus dados com muito mais rapidez.

Existem também várias opções potenciais no mysqldump, como não criar índices enquanto o dump está sendo importado - mas sim fazê-los em massa na conclusão.

Outras dicas

  1. Obtenha uma cópia de MySQL de alto desempenho.Grande livro.
  2. Inserções estendidas em dumps
  3. Despeje com -Tab Format para que você possa usar o MySqlimport, que é mais rápido que o MySQL <Dumpfile
  4. Importe com vários threads, um para cada tabela.
  5. Use um mecanismo de banco de dados diferente, se possível.Importar para um motor fortemente transacional como o InnoDB é muito lento.Inserir em um motor não transacional como Myisam é muito mais rápido.
  6. Olhe para a tabela Compare o script no Maakit Toolkit e veja se você pode atualizar suas tabelas em vez de despejá -las e importá -las.Mas você provavelmente está falando sobre backups/restaurações.

Se você estiver importando para o InnoDB, a coisa mais eficaz que você pode fazer é colocar

innodb_flush_log_at_trx_commit = 2

na tua my.cnf, temporariamente enquanto a importação está em execução.Você pode colocá-lo de volta 1 se você precisar de ÁCIDO.

Acho que sua pergunta também depende de onde está o gargalo:

  • Se a sua rede for um gargalo, você também pode dar uma olhada no -C/--compress bandeira para mysqldump.
  • Se o seu computador ficar sem memória (ou seja,começa a trocar), você deve comprar mais memória.

Além disso, dê uma olhada no --quick bandeira para mysqldump (e --disable-keys se você estiver usando MyIsam).

O uso de inserções estendidas em dumps deve tornar as importações mais rápidas.

desative as verificações de chave estrangeira e ative a confirmação automática.

mysqlhotcopy pode ser uma alternativa para você também se você tiver apenas tabelas MyIsam.

Outra alternativa é http://www.mydumper.org - backup/restauração mysql multithread que é 3x a 10x vezes mais rápido que o mysqldump e pode lidar com MyISAM e InnoDB, bem como Drizzle http://vbtechsupport.com/1695/

Usando índices, mas não muito, ative o cache de consultas, usando o sphinx para grandes bancos de dados, aqui estão algumas boas dicas http://www.keedeo.com/media/1857/26-astuces-pour-accelerer-vos-requetes-mysql (Em francês)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top