数据库死锁及解决方案
1. 什么是数据库死锁?
2.如何解决死锁?
- 数据库通常使用
- 回滚会带来大量的性能损耗,采用等待图来进行死锁检测
- 等待图中存在回路表示发生死锁。InnoDB采用深度优先检测死锁存在
- 发现死锁就在undo log中找回滚数据量最小的事务进行回滚。
3.等待图
等待图主要有俩信息链:锁的信息链和事务等待链
- 图中有4个事务:t1~t4,
- row1行中锁的信息链表示:t2上了x锁,t1上了s锁。
- 得到的等待图如下图,结点代表事务,有向边表示等待资源。
- 当存在回路时,则代表着事务互相等待,此时就意味着存在死锁
唯有热爱方能抵御岁月漫长。