耗时一个月新鲜的2022 CMU15445终于通关啦。CMU15445 是一个关系型数据库内核入门课,讲述了数据库设计的方方面面。BusTub 是CMU 15-445/645 Database Systems 基于C++的课程项目,涵盖了内存管理、存储引擎、执行器、并发控制,得益于 @迟策 的加持,引入一整套 SQL 层, BusTub 从课程项目变成了正真的SQL数据库,...
首先数据库是面试磁盘管理的,但是磁盘的读写都是相当耗时的,因此会使用内存池技术提高效率;因此,第一个课题就是实现内存池,负责将物理页面从主内存来回移动到磁盘;内存池的操作对数据库系统的其他部分是透明的,例如系统使用页面唯一标识(page_id)向内存池请求页面,但是它不知道该页面是否在内存中。更加需要注意的是...
第三个缓冲池管理组件中,就是按照函数的brief中的内容按部就班写了。由于再写这篇博客的时候gradescope中non cmu课程的对应lab还没开放测评,因此我这里只过了本地评测,可能并不是完全正确,特别是在并发这方面。对于并发,我直接一把大锁保平安了,遇事不决,一把大锁。至于如果之后在线评测的时候TLE了的话,那就只...
总结:CMU154452022fallProject 4要求实现一个基于两阶段锁协议的并发控制系统,支持多种隔离级别,并实现了锁管理器、死锁检测、并发查询执行以及性能优化等功能。通过该项目,可以深入理解并发控制和性能优化的相关概念和技术。
CMU 15445 2022通关小结:课程概述:课程名称:CMU 15445,一门深入探讨数据库内核的课程。学习成果:在一个月内顺利通关,从零开始实现了数据库内核。项目经验:项目名称:BusTub,基于C++实现。功能涵盖:内存管理、存储引擎、执行器、并发控制,以及完整的SQL层。实践体验:通过BusTub Shell执行SQL查询,...
CMU15445 2022fall project1 cmu15445 2022fall lab1 Buffer Pool 此project实现一个buffer pool,缓存住磁盘查询的数据。 Task1 这部分需要我们实现一个可扩展的哈希表,这部分的难点在于插入操作时的分裂,由于Remove不需要我们将目录和桶收缩回去,所以它也很简单。
这是对个人在2022年秋的CMU15445的project总结, 算是补档, 所有很多代码也忘了, 这里也就值只介绍其中的思路, 不涉及具体代码细节, 不过CMU15445的老师Andy本来也禁止个人公开代码实现的。 本次实验是实现一个字典树Trie, 但难度主要不在这个数据结构, 更多是通过这个项目熟悉C++常见的新特性。
官方project文档:https://15445.courses.cs.cmu.edu/fall2022/project1/ 1 项目目标 本项目要实现的缓存池结构如下: 实现一个可扩展哈希表, 将数据库中的一个page从磁盘缓存到内存中, 并且维持从page_id到page得到映射关系 当page的大小超出容量时, 使用lru-k进行替换 ...
提高了学习热情。由于今年的测试代码未公开,部分测试案例难以复现,我整理了一些案例供读者自测。截止2022年12月17日20:59,自动评分系统排行榜情况如下:12.22:优化了P1扩展哈希表,改进了P3 leaderborad中SQL优化部分。12.19:成绩更新 12.20:成绩更新 12.23:成绩更新 1.19:成绩更新 ...
并发控制在数据库管理中扮演关键角色,旨在确保事务并发执行的正确性和数据一致性。文章探讨了CMU15445-2022fall-Project 4中的并发控制技术,特别是基于两阶段提交(2PL)的并发控制方式,以及在实现中涉及的锁管理、事务隔离级别、并发查询执行和优化策略。在并发控制机制中,事务被视为数据库操作的基本单位...