在做Lab5-2之前,需要拉取实验代码:

项目地址:https://github.com/advancedalgebra/CC-2PL

git clone <https://github.com/advancedalgebra/CC-2PL.git>

1. 2PL算法简介

    2PL 是一种并发控制协议,它帮助数据库在运行过程中决定某个事务是否可以访问某条数据

并且 2PL 的正常工作并不需要提前知道所有事务的执行内容,仅仅依靠已知的信息即可。2PL 能够

确保最后的结果是满足某个 serial schedule 的。

顾名思义,2PL有两个阶段:growing 和 shrinking:

tips:常见的2PL变种

本次实验采用2PL常见实现方式:事务持有长锁,即事务进行过程中加锁,事务结束后集体释放。

tips:如果对2PL不熟悉的同学,可以参考这篇文章

锁的类型

动作开始前申请锁,动作结束立即释放锁。

动作开始前申请锁,动作结束继续持有锁,直到事务结束。多少2PL实现所采用的方式。