Impasse MySQL - Adicionando colunas

Impasse MySQL - Adicionando colunas

Eu tive um problema desagradável com o MySQL outro dia. Adicionei duas novas colunas à tabela 'Promoções' (13 colunas existentes, aproximadamente 750 registros) usando a interface PHPMyAdmin. Esta consulta ("ALTER TABLE.....") nunca foi totalmente executada e bloqueou a tabela, de modo que cada consulta subsequente a 'Promoções' seria interrompida e colocada na fila. Levei cerca de uma hora para perceber que isso estava acontecendo e o problema foi resolvido reiniciando meu banco de dados.

Existem precauções padrão que precisam ser tomadas e problemas conhecidos que surgem da alteração de esquemas de banco de dados? Nunca vi esse tipo de bloqueio acontecer antes.

Responder1

Considere o seguinte cenário para ALTER uma tabela mysql de maneira mais suave, especialmente no ambiente de produção:

1. CREATE tmp_table LIKE original_table
2. ALTER tmp_table..
3. INSERT INTO tmp_table SELECT * FROM original_table
4. RENAME original_table to orginal_table_old
5. RENAME tmp_table to original_table
6. DROP original_table_old

Você também pode estar interessado emTABELAS DE FLUSHeDESBLOQUEAR TABELASna documentação.

Editar: Existem soluções alternativas para resolver este problema, comopt-online-schema-changeferramenta da Percona.

informação relacionada