由上图我们可以看到,当两个事物包含了对方彼此的更新表时,并且是互相交叉,这样就会在MySql层会主动监测到更新闭环链路,而引发死锁告警。
如何解决:如果我们把事物进一步拆小,这样死锁可以避免。但是在实际应用场景中,我们事物管理的维度都是按照业务场景来走,并非是一个事物就只有一个更新操作。所以在实际的考量当中,应当把业务维度尽可能的缩小
同时尽可能去用主键去更新,使锁粒度达到行锁级别