Alterando Tabelas Grandes do MySQL InnoDB

Adicionar uma nova coluna ou adicionar um novo índice pode levar horas e dias para grandes tabelas innodb no MySQL com mais de 10 milhões de linhas. Qual é a melhor maneira de aumentar o desempenho em grandes tabelas de innodb nesses dois casos? Mais memória, aprimorando a configuração (por exemplo, aumentando asort_buffer_size ouinnodb_buffer_pool_sizeou algum tipo de truque? Em vez de alterar uma tabela diretamente, pode-se criar uma nova, alterá-la e copiar os dados antigos, o novo, como este, que é útil paraTabelas ISAM emúltiplas mudanças:

CREATE TABLE tablename_tmp LIKE tablename;
ALTER TABLE tablename_tmp ADD fieldname fieldtype;
INSERT INTO tablename_tmp SELECT * FROM tablename;
ALTER TABLE tablename RENAME tablename_old;
ALTER TABLE tablename_tmp RENAME tablename;

É recomendável para tabelas innodb, ou é apenas o que o comando ALTER TABLE faz?

questionAnswers(2)

yourAnswerToTheQuestion