我复制了一个大表的结构(顺便说一句,它是一个InnoDB表)
CREATE TABLE tempTbl LIKE realTbl
Run Code Online (Sandbox Code Playgroud)
然后我更改了一个索引,并填充它以便我可以运行一些测试。使用以下方法填充它:
INSERT INTO `tmpTbl`
SELECT *
FROM `realTbl`
Run Code Online (Sandbox Code Playgroud)
这花了太长时间,所以我想停止这个测试。1
我在处于“发送数据”状态时终止了该进程:它现在已“终止”,并且仍处于“正在发送数据”状态。
我知道一些被杀死的进程需要恢复更改,因此与它们运行的时间相比可能需要(同样?)很长时间才能杀死,但我无法想象为什么现在会出现这种情况:需要清空整个表。
我很好奇正在发生的事情需要停止/终止这样一个简单的查询很长时间。给你一些数字:插入运行了一个小时或 3 个小时,现在杀死接近5 7。看起来它几乎DELETE
每次都运行一次INSERT
,并且删除比插入花费的时间更长?这甚至合乎逻辑吗?
(如果有人知道如何将我的测试服务器恢复原状也很好,因为它正在消耗一些资源,但目前这并不重要:))
1) 我还不知道为什么(它是一个大表,10M 行,但它应该需要那么长时间?),但这是另一件事/不是这个问题的一部分:)。可能是我的测试本可以更聪明或更快速,但这也不是现在的问题:D