0
点赞
收藏
分享

微信扫一扫

数据库死锁及解决方案

1. 什么是数据库死锁?

  • 两个或两个以上事务在事务执行过程中,因为抢占资源而导致互相等待的现象。

2.如何解决死锁?

  • 数据库通常使用超时机制解决死锁。某一个事务超时后立刻回滚,其他事务就能继续进行了。
  • 回滚会带来大量的性能损耗,采用等待图来进行死锁检测
  • 等待图中存在回路表示发生死锁。InnoDB采用深度优先检测死锁存在
  • 发现死锁就在undo log中找回滚数据量最小的事务进行回滚

3.等待图

等待图主要有俩信息链:锁的信息链事务等待链

  • 图中有4个事务:t1~t4,
  • row1行中锁的信息链表示:t2上了x锁,t1上了s锁。
  • 得到的等待图如下图,结点代表事务,有向边表示等待资源
  • 存在回路时,则代表着事务互相等待,此时就意味着存在死锁

数据库死锁及解决方案_数据库

 

唯有热爱方能抵御岁月漫长。



举报

相关推荐

0 条评论