MySQL的InnoDB引擎具有行级锁定功能,即使您的代码正在插入或更新单个行(尤其是要更新的表上有多个索引),也可能导致死锁。最好的选择是围绕它设计代码,以便在由于死锁而失败的情况下重试事务。一些有关MySQL死锁诊断的有用信息以及可能的解决方法在此处提供。
Spring提供了一个有趣的通过AOP重试死锁的实现。这样,您只需将注释添加到要在出现死锁的情况下重试的方法。

MySQL的InnoDB引擎具有行级锁定功能,即使您的代码正在插入或更新单个行(尤其是要更新的表上有多个索引),也可能导致死锁。最好的选择是围绕它设计代码,以便在由于死锁而失败的情况下重试事务。一些有关MySQL死锁诊断的有用信息以及可能的解决方法在此处提供。
Spring提供了一个有趣的通过AOP重试死锁的实现。这样,您只需将注释添加到要在出现死锁的情况下重试的方法。