死锁发生情况:
1. 存在表A和表B,表A的主键是表B的外键
2.事务A在表A上申请到X锁以修改表A中数据和删除表A中的数据,然后需要检查表B中的数据是否满足外键约束,从而需要Range锁来锁住表B
3.事务B在表B上申请到X锁以修改表B中数据,然后向表A申请S锁来查询数据

以上情况表造成资源环状阻塞,从而应发死锁。

解决办法:
1. 从设计角度来看,应避免修改表A中主键的值
2. 对表B上的外键列建立索引,从而使事务A发生时将range锁放到索引上,从而降低死锁发生的概率

相关文章:

  • 2021-05-05
  • 2021-12-17
  • 2021-04-10
  • 2021-07-24
  • 2021-08-19
猜你喜欢
  • 2021-05-24
  • 2021-12-11
  • 2021-11-04
  • 2021-11-22
  • 2021-11-25
  • 2021-11-04
相关资源
相似解决方案