2.mysql操作入库时,尽量使用insert on duplicate key update,或者使用唯一id作为删除或者更新条件。
先记录下结论,过程有空再分析: 多线程写,并且有重复数据,会因唯一约束检查,导致加间隙锁,当多个事务都需要向其它线程持有锁写数据时,死锁发生; 解决方案: 不用insert ignore 和 ON DUPLICATE KEY UPDATE,把 SQL 拆开,判断好需要插入还是更新再操作; 单线程操作; 降隔离级别(未测试) 以上就是insert ignore 和 ...
MySql insert on duplicate key update 死锁 出现的场景 业务上面临高并发处理,由于数据可能频繁进行写入与更新,因此使用的是insert on duplicate key update语句,在高并发场景下,导致死锁报错 原因分析 死锁的本质是多个事务等待对方所持有的资源释放,且不会释放自身所持有的资源,导致事务之间循环等待 通过查阅文档...
先记录下结论,过程有空再分析: 多线程写,并且有重复数据,会因唯一约束检查,导致加间隙锁,当多个事务都需要向其它线程持有锁写数据时,死锁发生; 解决方案: 不用insert ignore 和 ON DUPLICATE KEY UPDATE,把 SQL 拆开,判断好需要插入还是更新再操作; 单线程操作; 降隔离级别(未测试) 以上就是insert ignore 和 ...