图片来自Pexels事件起因。公司交易量比较大,使用的数据库是MySQL。日增量在百万左右。,所以想要维持这张表的性能,只能考虑数据迁移。同事李某接到这个任务,于是想出了这两个方案:先通过程序查询,然后插入到历史表中,再删除原表。使用insertintoselect让数据库IO完成所有工作。在使用第一种方案的时候,发现一次加载所有负载,系统会直接OOM,但是分批进行会造成IO过多,耗时较长,所以选择了第二种方案。测试的时候没有问题,很开心。上网,然后被解雇。发生了什么?让我们回顾一下。先看第一种方案,先看伪代码://1.查询需要迁移的对应数据List