我在mysql数据库中的一个大型InnoDB表上运行了一个不明智的SELECT *
。
所以在10分钟左右后我意识到错误,找到了带有show processlist的connectionid
,并试图用kill命令终止连接和查询。然后我在同一个表上运行了另一个查询。
show processlist
显示原始选择已收到Killed标志,但卡在"发送数据"州。后续查询正在等待锁定。这已持续了几个小时。
现在我理解为什么,如果我的原始查询以任何方式修改了表格,我所描述的将等待回滚。
但这是select
;回滚一个选择甚至意味着什么?
所以我想知道是否有人可以告诉我我在等什么,以及是否有任何方便的方法可以取消select
查询。
答案 0 :(得分:1)
正如其他人所说,你不是在等待交易回滚。我也遇到过这个问题:把它称为一个bug,因为它确实是MySQL,但MySQL并不同意。
现在我不能给你任何东西,只有一个有根据的猜测,因为你得到这个'僵局',但我可以给你一个解决方案:
UNLOCK TABLES http://dev.mysql.com/doc/refman/5.0/en/lock-tables.html