如果您终止长时间运行的alter查询会发生什么?

时间:2010-04-28 17:47:54

标签: mysql kill alter

如果您终止长时间运行的更改查询,会发生什么? alter query会简单地还原吗?这需要多长时间(作为已经运行的时间的一部分)?

如果将该查询复制到另一台服务器上该怎么办?是否会杀死其他服务器上的进程还原原始服务器的alter query?

我们正在运行mysql

2 个答案:

答案 0 :(得分:17)

这取决于你在做什么。如果您在an alter table...add index表上运行InnoDB命令(不太确定MyISAM),那么它将运行并运行,因为它复制整个darn表lock-stock-和-barrel首先:如果它在“复制到临时表”的中间,那么它几乎是不可阻挡的。

See here:

  

在大多数情况下,ALTER TABLE的工作原理是   制作临时副本   原始表。改变是   在副本上执行,然后是   原始表被删除和新   一个被重命名。虽然ALTER TABLE是   正在执行,原始表是   其他会话可读。更新   并写入表格停滞不前   直到新表准备就绪,然后   被自动重定向到   没有任何失败更新的新表。

答案 1 :(得分:0)

  

如果将该查询复制到另一台服务器上该怎么办?

ALTER也将在该服务器上执行,并带来相关的影响。

  

是否会杀死其他服务器上的进程还原原始服务器的alter query?

不。原始服务器没有后台通道来了解从站上发生(或未发生)的情况。如果你杀死了奴隶上的ALTER,那么你将在主人有新约束或索引的情况下结束,而奴隶没有。这很少是幸福的秘诀:)

一旦ALTER进入复制日志,你就必须让它在任何地方运行,或者到处杀死它。