再谈MySQL删除大量数据-就要用delete

手头有一张大表数据1.49亿,决定将大约1.4亿较早的数据删除。

因为是生产系统,不能停机,因此之前写过的那些方法不适用。这里要用到一直不愿意用的delete。

在内部搭建了一个测试环境。

Linux+MySQL 5.7

逻辑条件:删除小于主键值小于条件值的记录。

方案:

一次性删除会导致应用无法正常使用该表。因此采取少量多次的方式执行。例如删除1000条符合条件的记录,然后等待几秒钟,再删除1000条符合条件的记录,再进入等待,循环往复。

测试:

本方案关键点是每次删除语句的效率,执行时间尽量少,减少对应用的影响。

测试delete单次删除1万条,所需时间大约9秒,2万条大约20秒左右。

再谈MySQL删除大量数据-就要用delete_第1张图片

5万条大约1分40-50秒,10万条时间比较长,要3分40-50秒。

这个结果不太理想,得想想办法。

在delete中加上limit会是什么效果?

你可能感兴趣的:(数据库实战秘籍,mysql,数据库,database,删除大量记录)