我试图从我的 MySQL 表中删除一些行,该表有 2 亿行。虽然一开始它运行良好,但几个小时后速度会急剧下降。我希望我现在可以停止查询并重新启动它,从而让它更快地发生。之后我的数据库会保持完整吗?
最佳答案
您可以通过终止启动它的 session 来终止当前的删除操作。为此,您可以使用已经提到的从其他 session 发出的 KILL
语句,或者如果您的删除是从某些客户端代码(例如 php)发出的,则终止客户端进程。
完整 不是很清楚您的意思。如果您指的是 table 的完整性,那么是的,它应该完好无损。如果你的意思是它会被回滚,那么它取决于发布删除的上下文。
要批量删除分离后的剩余行,假设您从一个表中DELETE
(意味着您没有使用多表语法),您可以尝试使用LIMIT
子句。
DELETE
FROM table_name
WHERE ...
LIMIT 10000 -- or any other appropriate batch size
这样您就可以一次删除 n (10000) 行。
关于mysql - 在完成之前停止 MySQL 删除查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20307882/