Acelere o MySQL para inserções (para fins de teste)

Acelere o MySQL para inserções (para fins de teste)

Eu tenho um software que precisa fazer muitos INSERTs. No ambiente de produção, haverá alguns ajustes e testes sérios e coisas assim, mas agora, quando preciso testar, gostaria de acelerar as inserções o máximo possível. Daí a minha pergunta - existe uma maneira de ajustar o mysql de forma que ele não faça muita E/S de disco, mas mantenha tudo na RAM e raramente sincronize com o disco (como uma vez em n segundos, digamos?)

Responder1

Insert Delayed pode ajudar (apenas MyISAM), porque permite inserir em massa (que é para isso que MyISAM é bom).
O particionamento da sua mesa também ajudará.

Se sua memória permitir (e é isso que você está pedindo), você pode usar uma tabela de memória. Apenas certifique-se de que as configurações max_heap_table_size e tmp_table_size sejam suficientes para os dados.

Um pouco mais de truque, poderia ser (no Linux) usar TMPFS e colocar seu arquivo de dados lá (usando Symlinks)

Responder2

Veja a resposta do manual do MySQLaqui. Para responder à sua pergunta específica, verifique INSERT DELAYEDqual faz exatamente o que você deseja. Você pode ajustar seu comportamento com delayed_insert_limite delayed_queue_size.

Porém, se você puder agrupar os INSERTs, isso poderá ser ainda mais rápido; use a ferramenta de inserção em massa ou forneça várias listas de VALORES, por exemplo:INSERT INTO table (column) VALUES (val1),(val2),(val3)

Responder3

como Daniel diz na segunda parte de sua resposta - as inserções em lote lhe darão muito. verificaresseapresentação. sua escala é provavelmente muito menor, mas acho que você achará interessante de qualquer maneira.

informação relacionada