项目简介
BusTub是卡内基梅隆大学CMU 15 - 445课程的Lab项目,目标是实现一个基础的存储引擎。此项目包含缓冲池管理、索引管理、并发控制、日志记录与恢复等核心功能模块,有助于学生深入理解数据库系统的内部工作原理。
项目的主要特性和功能
1. 缓冲池管理(Buffer Pool)
- 负责物理页面在主内存和磁盘间的移动,使DBMS能支持大于系统可用内存量的数据库。
- 采用LRU缓存替换策略,减少磁盘IO次数,提升性能。
- 利用互斥锁保证缓冲池的线程安全性。
2. 索引管理(Index)
- 以B + 树作为底层数据结构,实现多级索引,支持快速随机查找和有序记录的高效访问。
- 多线程并发访问时,使用节点粒度的锁保证线程安全。
- 沿访问路径加锁,仅锁住分支,减小临界区,提高并发访问性能。
3. 并发控制(Concurrency Control)
- 实现锁管理器,支持并发查询执行,跟踪元组级锁,支持共享锁和排他锁的授予与释放。
- 在后台线程使用等待有向图实现定时的死锁检测算法,通过Abort开始时间晚的事务并回滚来打破死锁。
- 实现了READ_UNCOMMITED、READ_COMMITTED和REPEATABLE_READ三种常见隔离级别。
4. 日志记录与恢复(Logging & Recovery)
- 在No - Force/Steal缓冲策略下实现先写日志,记录页面级写入操作和事务命令。
- 采用物理逻辑日志,并使用日志顺序号保证物理逻辑redo操作的幂等性。
- 设计日志缓冲区,将多条日志记录在缓冲区后一次输出到稳定储存器,减小系统开销。
- 采用No - Force策略,事务只需等待提交日志输出到稳定储存器即可提交,无需等待修改数据全部写入磁盘,加快事务提交速度。
安装使用步骤
1. 环境准备
- 确保系统安装了C++编译器(如GCC或Clang)。
- 安装CMake用于项目构建。
2. 复制项目
bash
cd Bustub
3. 构建项目
bash
mkdir build
cd build
cmake ..
make
4. 运行测试
bash
ctest
5. 运行项目
bash
./bustub_executable
通过以上步骤,可成功构建并运行BusTub存储引擎项目,对其核心功能进行测试和验证。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】