美文网首页
2PL学习记录

2PL学习记录

作者: clnsx | 来源:发表于2019-05-07 16:59 被阅读0次

    2PL学习记录

    《区块链核心算法解析》中提及2PL,最早接触2PL应该是在大三数据库原理课上,但是已经忘记了,所以重新学习一下2PL。

    事务可串行性(SERIALIZABLE)

    说到2PL两阶段锁,就不得不提及事务可串行性

    • 在说事务可串行性之前,先讲讲为什么数据会出错,以及冲突操作的概念。
      1. 为什么会出错:
         那是因为多个事务访问数据库,比如A事务先读1资源,B事务后写1资源,如果出现问题先让B事务写了1资源,那么A事务就会读错了,这是并发调度产生的问题。
      2. 冲突操作的概念:
        冲突操作是指不同的事务对同一个数据的读写操作和写写操作,还有同一个事务的读写。
        Ri (x)与Wj(x) (事务Ti读x,Tj写x)
        Wi(x)与Wj(x) (事务Ti写x,Tj写x)
        Ri(x)与Wi(x) (事务Ti读x,Tj写x)
    • 事务可串行性是为了保证数据库在并发操作时,数据是正确,可以看串行调度的定义:一个调度中,属于一个事务的所有操作连续执行,称之为串行调度。
      简单来说,就是一次并发操作(多个事务操作数据库)得到的结果(事务执行到最后的结果(读或者写))与某一次串行调度的结果是一致的,就可以保证这次并发操作是正确的。

    2PL(2阶段锁协议,two-phase locking protocol)

    • 2阶段锁协议,就是给要做的数据上锁,然后执行完所有操作后再解锁,解锁时就不能有任何操作了。所以是两阶段(上锁操作+解锁),来保证数据不出错。
    • 2PL内容很少,重点基本上是理解可串行性和冲突操作。

    相关文章

      网友评论

          本文标题:2PL学习记录

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