线上项目有 2 个定时任务在跑
任务 1:向 A 表中批量插入数据,采用的是 mybatis SqlSession ---> ExecutorType.BATCH 方式来批量提交数据
任务 2: 向 A 表中删除一条数据
在某个时间点,2 个任务同时执行了,然后产生了死锁的情况。
想问下各位大佬,这个死锁是怎么造成的?
我看了一些文档猜测是 gap 锁和插入意向锁,但是又有点理不清楚到底怎么死锁的
mysql 查看死锁的日志 show engine innodb status\G;
日志如下 :
任务 2 的锁
任务 1 的锁(使用了 spring 的事务回滚)