Concurrency

DataBase
Author

Proudyang

Published

March 1, 2023

前言

写这篇文章大抵是我结束这个实验一个月的时间吧。不知道为什么现在什么方向都是这么的卷。其实这一个月来挺焦虑的,之前觉得写个cmu15-445找个实习是没什么问题的。但是如你所见这个方向已经卷麻了,都是人手一套445和824(分布式我还没学)。乐。但是其实写了这套课程的实验也不亏,确实提高了我的编码能力和debug的能力。总之这是这个实验的最后一个part(并发控制)。

Task #1 - Lock Manager

第一个任务是要求我们实现一个锁管理器。什么是锁管理器呢?加个锁还要管理器。因为数据库的并发控制需要满足各种隔离等级。因此一般的加锁方案是无法满足的,所有需要一个管理器管理复杂的加锁解锁服务。

基本的请求流程:(为了不增加理解的复杂度,这里略去了很多细节)

lock manger维护了一个资源与请求队列对应的表。

获取锁

  1. txn向lock manger请求锁。

  2. 将请求加入请求队列中。

  3. 判断能否给予锁,能, 将请求的状态grant_设为true,不能,将请求休眠。

释放锁

  1. txn删除对应的请求,唤醒整个队列里休眠的成员。