为什么我需要在 mysql (InnoDB) 中回滚 SELECT?

Dev*_*ull 5 mysql sql innodb sql-optimization

SELECT *对 mysql 数据库中的大型 InnoDB 表进行了不明智的操作。

因此,大约 10 分钟后,我意识到了错误,找到了connectionidwith show processlist,并尝试使用 kill 命令终止连接和查询。然后我在同一张表上运行了另一个查询。

show processlist显示原始选择已收到 Killed 标志,但卡在“正在发送数据”状态。后续查询正在等待锁定。这已经持续了几个小时。

现在我明白了,如果我的原始查询以任何方式修改了表,那么我所描述的将等待回滚。

但这是一个select; 回滚 select 甚至意味着什么?

所以我想知道是否有人可以告诉我我在等待什么,以及是否有任何方便的方法来取消select查询。

Dav*_*san 2

正如其他人所说,您并不是在等待事务回滚。我也遇到过这个问题:称其为bug,因为它确实是一个bug,尽管MySQL不同意。

现在我不能给你任何东西,只能给你一个有根据的猜测,因为你会遇到这个“僵局”,但我可以给你一个解决方案:

解锁表 http://dev.mysql.com/doc/refman/5.0/en/lock-tables.html