如果我杀死一个巨大的MySQL InnoDb DELETE查询会怎么样?

时间:2012-10-24 22:34:23

标签: mysql sql query-optimization

我目前正在运行一个DELETE查询,这个查询花费的时间比预期的要长很多(已经10小时了!)。我想通过phpmyadmin进程杀死它,但是我担心会发生什么。回滚他会自动花费很多时间吗?当前查询状态显示“正在更新”。

2 个答案:

答案 0 :(得分:2)

这取决于您的查询现在的阶段。 但一般来说,回滚需要大约相等的时间,有时甚至比原始操作更多。

根据this document的第2点,这不是真的可取。

此外,请务必验证您的MySQL版本,因为它有一个非常讨厌的错误,删除/更新查询在某些版本中按照this article回滚

重新启动/终止MySQL进程无效,因为重启后将恢复回滚。

答案 1 :(得分:2)

Thumb规则是:

  

让它自己回滚,甚至不考虑重新启动   数据库,因为它将在重新启动后恢复,但更糟糕的是你的数据库不会   同时可以访问。

是大量数据(即数百万行)的回滚将比其提交操作慢得多,如果并行InnoDB提交发生在同一个数据库中则更慢。