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

4
我有一个关于Mysql设置的问题:每次进行alter table操作都需要约5分钟才能完成,即使表格是完全空的。有时查询甚至会因为超时而失败(错误2013:在查询期间丢失与MySQL服务器的连接,SQL语句: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中解决。


2
只有 ALTER TABLE 查询很慢,还是其他查询也很慢? - bronislav
2
你要执行什么ALTER操作?你尝试在哪张表上执行它? - Andy Lester
1
从另一个客户端运行 show full processlist 命令,查看您的 alter 语句的状态。 - Vatev
1
你确定没有其他程序正在使用这张表吗?尝试创建一个测试表并对其进行修改。 - Vatev
1
看起来它在实际修改之前正在等待表级锁。这很有道理。因此,您的问题是在您尝试修改它之前,其他东西正在锁定该表。 - Sergiu Paraschiv
显示剩余4条评论
1个回答

0

在这里尝试您的查询。

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

如果查询中有任何问题,你都会发现它。

否则

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

- 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.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接