当前位置:   article > 正文

11.4 活锁和死锁

活锁

思维导图:

 

 

11.4 活锁和死锁

11.4.1 活锁
  1. 活锁的定义
    • 活锁发生在多个事务反复因为锁资源竞争而互相等待,但没有事务能够继续执行。
  2. 活锁的产生
    • 例子:事务T₁锁定数据R,事务T₂等待R。当T₁释放R后,系统先批准另一个事务T₃的锁请求,T₂继续等待。这种模式可能导致T₂永远等待。
  3. 避免活锁的方法
    • 先来先服务策略:按照事务请求锁的顺序进行排队,一旦锁被释放,就按顺序批准下一个请求。
11.4.2 死锁
  1. 死锁的定义
    • 死锁是指多个事务互相等待对方持有的锁资源,导致所有涉及事务都无法继续执行的情况。
  2. 死锁的产生
    • 例子:事务T₁等待事务T₂持有的锁,同时T₂等待T₁持有的锁,导致两个事务都无法继续执行。
  3. 避免死锁的策略
    • 死锁预防:如超时机制,锁定顺序等。
    • 死锁检测与恢复:系统定期检测死锁并选择牺牲某些事务以解锁。

注意点

  • 理解活锁和死锁的区别:活锁涉及事务无限期等待,而死锁涉及事务相互阻塞。
  • 避免策略的重要性:了解不同的避免策略以减少或消除活锁和死锁的风险。

易错点

  1. 混淆活锁和死锁:可能会混淆活锁和死锁的概念和特征。
  2. 忽视避免策略:在数据库设计和操作中可能会忽视实施有效的活锁和死锁避免策略。
  3. 过度依赖死锁检测:可能过分依赖死锁检测机制,而忽略更主动的预防措施。

 

 

11.4.2 死锁

1. 死锁的定义
  • 概念:多个事务因为互相等待对方持有的锁资源而导致都无法继续执行的局面。
2. 死锁的产生
  • 示例:事务T₁锁定数据R,事务T₂锁定数据R₂,然后T₁请求锁定R₂,T₂请求锁定R,导致彼此等待。
3. 死锁预防
  • 一次封锁法:事务一次性锁定所有需要的数据对象,避免死锁但可能降低并发度。
  • 顺序封锁法:按预定顺序锁定数据对象,避免死锁但在实际操作中难以维护。
4. 死锁的诊断与解除
  • 超时法:基于等待时间判断死锁,易于实现但可能误判。
  • 等待图法:构建事务等待图,通过检测回路来判断死锁。
  • 解除死锁:选择代价最小的事务进行撤销,释放锁资源。

注意点

  • 理解死锁的严重性:强调死锁对系统性能的影响和需要采取的预防措施。
  • 死锁预防和解除策略:了解不同的死锁预防和解除策略及其应用场景。

易错点

  1. 死锁预防策略的过度应用:过度使用死锁预防策略可能导致系统并发度降低。
  2. 误解死锁的诊断方法:可能会误判死锁或不适当地选择解除死锁的事务。
  3. 忽视死锁的动态性:在动态变化的数据库环境中,死锁的情况可能频繁变化,需要适时调整策略。

这一节的笔记强调了死锁在数据库并发控制中的重要性,特别是在避免资源浪费和保持事务运行顺畅方面的作用。理解死锁的概念以及如何预防和解除死锁对于维护高效和稳定的数据库系统至关重要。

 

重点

  1. 活锁的定义:活锁发生时,事务不断地重复尝试获取锁,但由于其他事务的相互竞争,它们都无法继续进行。
  2. 活锁的产生:例如,事务T₁锁定资源R后,事务T₂等待R;当T₁释放R且系统允许另一个事务T₃获得R的锁时,T₂继续等待,可能导致T₂永远在等待。
3. 避免活锁的方法
  • 先来先服务策略:根据事务请求锁的时间顺序进行排队,保证公平性。

难点

  1. 理解活锁产生的机制:活锁通常是由于系统资源分配策略不当造成的。
  2. 区分活锁和死锁:活锁涉及事务在等待时不断尝试,而死锁是事务完全停滞。

易错点

  1. 混淆活锁和死锁:可能会将活锁误解为死锁,两者虽然都涉及锁等待,但表现形式和解决方法不同。
  2. 错误的避免策略:在尝试避免活锁时,可能过度依赖先来先服务策略,而忽视了对事务优先级或其他资源分配策略的考虑。
  3. 忽视活锁的影响:可能低估活锁对系统性能的影响,尤其是在高并发环境中。

重点

  1. 死锁的定义:多个事务由于互相等待对方持有的锁而导致无法继续执行。
  2. 死锁的产生原因:事务互相锁定对方需要的资源,形成等待循环。
  3. 死锁预防方法
    • 一次封锁法:一次性锁定所有需要的资源。
    • 顺序封锁法:按照一定顺序锁定资源。
4. 死锁的诊断与解除
  • 超时法:基于事务等待时间超过阈值判断死锁。
  • 等待图法:通过检测事务等待图中的循环来判断死锁。
  • 解除策略:撤销代价最小的事务以解锁。

难点

  1. 理解死锁产生的机制:明白事务如何通过互相等待造成死锁。
  2. 选择适当的死锁预防方法:根据不同场景选择合适的死锁预防策略。

易错点

  1. 死锁预防方法的不当应用:过度使用某种死锁预防方法可能导致系统并发性能降低。
  2. 误判死锁情况:使用超时法可能会因为非死锁原因导致的延迟误判为死锁。
  3. 处理死锁的方法选择:在解除死锁时,错误地选择撤销事务可能导致更大的资源浪费或业务影响。

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/正经夜光杯/article/detail/771987
推荐阅读
相关标签
  

闽ICP备14008679号