描述:
Finance 系统 调用 Process 系统的时候发生死锁。用 show processlist 可以看到存在status是 updating 的进程,而该进程就是发生了死锁的sql。
分析:问题产生的原因是:Finance 系统在事务A中update了一条数据,并且这条数据已被加行锁;Process 系统在事务B中也试图update这一条数据,由于,锁还被事务A掌握,事务B只能等待事务A提交才能拿到锁,事务A依赖于事务B,即必须等待事务B结束事务A才能继续下去,这样事务A、B陷入了死循环,互不相让。----死锁由此产生。
解决:
把事务B的update操作放到事务A中,避免两个事务操作同一个数据。事务A的问题至此解决