美文网首页
Concurrency Control 算法分类

Concurrency Control 算法分类

作者: zczhuohuo | 来源:发表于2016-01-23 13:20 被阅读40次

Concurrency Control 算法分类

TwoPhaseLocking

悲观算法,访问资源必须获取一把锁,否则一直等待资源释放,因此有可能导致死锁的发生。

  1. 2PLwithdeadlockdetection.(通过一个 dead lock detector 来检查死锁的发生,并决定 abort 哪个事务)
  2. 2PL with non-waiting deadlock prevention. (更加保守的算法,在获取锁之前便决定是否有可能发生死锁,如果有,则abort响应事务)
  3. 2PL with wait-and-die deadlock prevention. (每一个事务都有一个时间戳,代表该事务的年龄。如果一个『年轻的』事务申请一个由『年老的』事务所拥有的资源时,『年轻的』事务立马被abort。

TimestampOrderingProtocols

乐观算法,通过时间戳来保证事务的一致性

  1. BasicT/Oalgorithm.(最基本的 TO 算法)
  2. Multi-version T/O.(每写一个 tuple,数据库便会为该 tuple 保存一个版本,当事务有读的请求时,数据库会决定返回哪个版本。主要是通过时间戳来保证事务在order上的一致性罢)
  3. Optimistic concurrency control. (所有数据都在事务自己的 workspace里面读写,当事务提交时,检测是否有冲突发生,并且决定该怎么办)
  4. T/O with partition-level locking. (将数据分成一个个的 partition,然后又很多的线程,有且仅有一个线程可以访问这些partition,当事务需要访问某一个partition时,便会向相应的线程申请资源。线程会将事务的申请放进一个队列里面,然后每次都从队列里面获取『最老』的申请,让它来访问partition的内容)

相关文章

网友评论

      本文标题:Concurrency Control 算法分类

      本文链接:https://www.haomeiwen.com/subject/pkuehttx.html