生产环境一个join,产生笛卡儿积,回滚日志剧增

2021-08-19  本文已影响0人  frankie_cheung

场景

晚上同事告诉我 一个普通的SQL跑了很久,是不是锁住了,我登陆上去kill mysql线程
发现无法kill,事务状态为 rolling back状态,然后平时十几兆的undolog 突然变成了十多G

原因

sql在join的时候 on的条件写错了,导致笛卡儿积。

sql如下

insert into c select * from a inner join b on a.id=a.id

本来应该是a.id=b.id,但是他复制错了,直接导致笛卡儿积

a表有140万,b表有700多,笛卡儿积直接140万*700,大约7亿条数据

一个insert 语句 一个事务,7亿数据 肯定会有问题。

解决

等待回滚,应该回滚了一晚上。。。

上一篇下一篇

猜你喜欢

热点阅读