数据库版本:阿里云RDS 5.7
隔离级别:RC
表结构:t
(id
bigint(20) NOT NULL AUTO_INCREMENT,a
datetime,b
bigint(20),c
varchar(255),d
bigint(20),e
varchar(50),f
int(11),
PRIMARY KEY (id
)
);
产生死锁的业务代码(仅贴出伪代码):
@Transactional
public void update(String s) {
for (int i = 1; i < 6; i++) {
update t set ... where e = #{s} and f = #{i};
}
}
该事务在并发场景下发生死锁,求大神解释一下为什么会死锁?