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

Why do I need to rollback a SELECT in mysql (InnoDB)?

我 运行 在 mysql 数据库中的大型 InnoDB table 上 SELECT * 不明智。

所以大约 10 分钟后我意识到错误,用 show processlist 找到了 connectionid,并试图用 kill 命令终止连接和查询。然后我 运行 另一个关于同一个 table 的查询。

show processlist 显示原来的 select 收到了 Killed 标志,但卡在了 "Sending data" 状态。后续查询正在等待锁定。这已经持续了几个小时。

现在我明白了为什么,如果我的原始查询一直在以任何方式修改 table,那么我要描述的内容将等待回滚。

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

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

您不是像其他人所说的那样等待事务回滚。我也遇到过这个问题:称它为错误,因为它确实是一个错误 MySQL 不同意。

现在我只能给你一个有根据的猜测,因为你得到这个 'deadlock',但我可以给你一个解决方案:

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