一般死锁都是不同业务之间AB, BA 加锁顺序不同导致死锁. 今天遇到同一个业务死锁
找到导致死锁的代码, 大概是:
insert into XXX
update XXX where YYY_id = 1;
XXX表只有一个主键索引id
insert 语句对id索引加行锁
update语句全表加锁
如果两个业务同时运行, 两个业务行锁都成功, 但是加全表锁的时候会失败, 然后强制死掉一个, 另外一个会成功
解决办法:
YYY_id 加上索引
一般死锁都是不同业务之间AB, BA 加锁顺序不同导致死锁. 今天遇到同一个业务死锁
找到导致死锁的代码, 大概是:
insert into XXX
update XXX where YYY_id = 1;
XXX表只有一个主键索引id
insert 语句对id索引加行锁
update语句全表加锁
如果两个业务同时运行, 两个业务行锁都成功, 但是加全表锁的时候会失败, 然后强制死掉一个, 另外一个会成功
解决办法:
YYY_id 加上索引