并发控制

  • 在数据库中, 并发控制机制主要依靠加锁解决

Two-Phase Locking

Conservative Two-Phase Locking

  • 事务开始时,即一次性申请所有的锁,之后不会再申请任何锁,如果其中某个锁不可用,则整个申请就不成功,事务就不会执行,需要等待得到所有锁之后执行事务
  • 在事务尾端,一次性释放所有的锁
  • 一次性锁协议不会产生死锁的问题,但事务的并发度不高, 所以不常用

Strict Two-Phase Locking

整个事务分为两个阶段,前一个阶段为加锁,后一个阶段为解锁。

  • 加锁阶段: 事务只能加锁,也可以操作数据,但不能解锁
  • 解锁阶段: 当事务释放第一个锁时进入解锁阶段,此过程中事务只能解锁,也可以操作数据,不能再加锁。
  • 不足是没有解决死锁的问题,因为它在加锁阶段没有顺序要求。如两个事务分别申请了A, B锁,接着又申请对方的锁,此时进入死锁状态。

利用Two-Phase Locking解决冲突

WR — “dirty reads”

在这里插入图片描述

RW — “Nonrepeatable reads” — 会产生死锁

在这里插入图片描述

WW — “Lost updates”

在这里插入图片描述

死锁 – Deadlocks

  • Deadlock: Cycle of transactions waiting for locks to be released by each other

Deadlock Detection

在这里插入图片描述

Deadlock Prevention

在这里插入图片描述

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐