非常慢的alter table(即使没有行)

时间:2015-07-14 14:16:01

标签: mysql sql alter-table

我的Mysql设置存在问题:即使表格完全为空,我制作的每个alter table也需要大约5分钟才能完成。

有时查询甚至因超时而失败(错误2013:在查询SQL语句期间丢失了与MySQL服务器的连接:ALTER TABLE ...)。

此外,该表位于测试数据库中,因此不会同时进行其他查询。

我在12 CPU机器上使用Mysql 5.7,所以我不认为硬件是问题。

你知道如何解决这个问题吗?

感谢您的时间

修改 运行show full processlist

Altering table  ALTER TABLE ...
Waiting for table metadata lock ALTER TABLE ...

PS:这种行为发生在任何表和每个ALTER TABLE语句

修改 这个问题在Mysql 5.7.8中解决了

1 个答案:

答案 0 :(得分:0)

在此处尝试您的查询。

https://www.percona.com/doc/percona-toolkit/2.1/pt-online-schema-change.html

如果查询中有任何不良内容,您会找到它。

否则

完全转储和重新加载比alter更快。

即。

- Create a new table (using the structure of the current table) with the new column(s) included.

- execute a INSERT INTO new_table SELECT (column1,..columnN) FROM current_table;

- rename the current table

- rename the new table using the name of the current table.