如果您终止长时间运行的更改查询,会发生什么? alter query会简单地还原吗?这需要多长时间(作为已经运行的时间的一部分)?
如果将该查询复制到另一台服务器上该怎么办?是否会杀死其他服务器上的进程还原原始服务器的alter query?
我们正在运行mysql
答案 0 :(得分:17)
这取决于你在做什么。如果您在an alter table...add index
表上运行InnoDB
命令(不太确定MyISAM
),那么它将运行并运行,因为它复制整个darn表lock-stock-和-barrel首先:如果它在“复制到临时表”的中间,那么它几乎是不可阻挡的。
在大多数情况下,ALTER TABLE的工作原理是 制作临时副本 原始表。改变是 在副本上执行,然后是 原始表被删除和新 一个被重命名。虽然ALTER TABLE是 正在执行,原始表是 其他会话可读。更新 并写入表格停滞不前 直到新表准备就绪,然后 被自动重定向到 没有任何失败更新的新表。
答案 1 :(得分:0)
如果将该查询复制到另一台服务器上该怎么办?
ALTER也将在该服务器上执行,并带来相关的影响。
是否会杀死其他服务器上的进程还原原始服务器的alter query?
不。原始服务器没有后台通道来了解从站上发生(或未发生)的情况。如果你杀死了奴隶上的ALTER,那么你将在主人有新约束或索引的情况下结束,而奴隶没有。这很少是幸福的秘诀:)
一旦ALTER进入复制日志,你就必须让它在任何地方运行,或者到处杀死它。