前言
可以跟着这位大佬的文章做,讲解的非常好。
遇到的几个问题
- task2: DFS搜索需要从最小txn_id开始,每次选择最小txn_id。
- task3: undo的过程。注意是从后往前。
- task3: 需要支持先执行写操作,再执行读操作。即可以先拿x锁,进行修改再读,且不会报错。
测评与总结
如图,过了本地测试和大部分在线测试,但task3在线测试有个bug一直找不出来。
到此,cmu15445 2023的实验基本完成,这个bug以及其他的一些优化等秋招结束有空再做。
做这个项目的本意是丰富简历的项目经历,前后花了大概2周时间,收获还是挺多的,加深了对一些数据库基础的理解,以及debug更熟练了,建议有时间的同学可以跟着做一做。
【5.21更新】过了,这个bug就是需要申请锁之前检查是否已经获得了锁,另外,在seqscan中,获取锁之后还需要再次读入metadata,因为metadata在等待锁的时候可能已经更改了。
截止提交时间(2023.05-21),gradescope上有8人完成了project4。
资源
课程主页
Bustub Github
在线测试网站 (Entry Code: 2KJRB5), 注意用外国大学以及gmail注册。
lab0资源 我的lab0实现,入门实现有困难的同学可以参考一下。