MySQL 死锁-添加列

MySQL 死锁-添加列

前几天我遇到了一个棘手的 MySQL 问题。我使用 PHPMyAdmin 界面向表“Promotions”(13 个现有列,约 750 条记录)添加了两个新列。此查询(“ALTER TABLE.....”)从未完全执行并锁定了表,因此对“Promotions”的每个后续查询都会挂起并排队。我花了大约一个小时才意识到发生了这种情况,我通过重新启动数据库解决了这个问题。

是否需要采取标准预防措施,以及更改数据库架构时会出现哪些已知问题?我以前从未见过这种锁定。

答案1

考虑以下场景,以便更顺利地更改 mysql 表,特别是在生产环境中:

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

您可能还感兴趣齐平桌解锁表格关于文档。

编辑: 还有其他解决方案可以解决这个问题,例如pt-在线-架构更改Percona 的工具。

相关内容