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

B T*_*B T 28 mysql kill alter

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

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

我们正在运行mysql

dav*_*vek 17

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

看这里:

在大多数情况下,ALTER TABLE通过制作原始表的临时副本来工作.对副本执行更改,然后删除原始表并重命名新表.在执行ALTER TABLE时,原始表可由其他会话读取.对表的更新和写入将停止,直到新表准备就绪,然后自动重定向到新表,而不会有任何失败的更新.

  • 看起来我们的情况是"不需要临时桌子" - 但看起来我们的桌子仍然被锁定,我们的开放连接飙升,我们有5到10分钟的停机时间.如果我们杀死一个*不*创建副本的查询...那么什么? (2认同)
  • 顺便说一下,我在复制到临时表时杀死了进程,它删除了写锁,数据仍然存在并可访问.我不知道临时副本去了哪里. (2认同)