MySQL查询在被杀后不会消失

我有一个 MySQL查询,将数据从一个表复制到另一个表进行处理.出于某种原因,这个查询通常需要几秒钟的时间才能锁定并运行几个小时.当我今天早上登录时,我试图终止查询,但它仍然列在进程列表中.

| Id      | User     | Host      | db   | Command | Time  | State        | Info                                                                                 |
+---------+----------+-----------+------+---------+-------+--------------+--------------------------------------------------------------------------------------+
| 1061763 | tb_admin | localhost | dw   | Killed  | 45299 | Sending data | INSERT INTO email_data_inno_stage SELECT * FROM email_data_test LIMIT 4480000, 10000 |
| 1062614 | tb_admin | localhost | dw   | Killed  |   863 | Sending data | INSERT INTO email_data_inno_stage SELECT * FROM email_data_test LIMIT 4480000, 10000 |

可能是什么造成了这种情况,我怎样才能杀死这个过程,以便继续我的工作?

如果表email_data_test是MyISAM并且它已被锁定,则会阻止INSERT.

如果表email_data_test是InnoDB,那么很多MVCC数据都是用ib_logfiles编写的,这可能还没有发生.

在这两种情况下,您都有LIMIT子句滚动4,480,000行,以获得INSERT实际需要的10,000行.

杀死查询只会导致InnoDB表email_data_inno_stage执行回滚.

相关文章
相关标签/搜索