今天看啥  ›  专栏  ›  51CTO技术栈

血一般的教训,请慎用insert into select

51CTO技术栈  · 公众号  · 程序员  · 2021-02-26 15:00
“ 血一般的教训,请慎用 insert into select。同事应用之后,导致公司损失了近 10w 元,最终被公司开除。图片来自 Pexels事情的起因公司的交易量比较大,使用的数据库是 MySQL,每天的增量差不多在百万左右,公司并没有分库分表,所以想维持这个表的性能只能考虑做数据迁移。同事李某接到了这个任务,于是他想出了这两个方案:先通过程序查询出来,然后插入历史表,再删除原表。使用 insert into select 让数据库 IO 来完成所有操作。第一个方案使用的时候发现一次性全部加载,系统直接就 OOM 了,但是分批次做就过多 IO 和时间长,于是选用了第二种方案,测试的时候没有任何问题,开开心心上线,然后被开除。到底发生了啥?我们复盘一下。先来看第一个方案,先看伪 ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照