本项目基于课程 MiniSQL 框架实现,补齐了存储管理、记录管理、Catalog、B+Tree 索引、执行器、恢复与并发控制等核心模块,并保留了单元测试与验收脚本,便于复现和继续开发。
- 支持数据库创建、切换、删除与持久化恢复
- 支持建表、删表、插入、删除、更新、查询
- 支持主键和单列
unique约束校验 - 支持 B+Tree 索引创建、删除和基于索引的查询
- 支持
execfile批量执行 SQL - 支持按实验文档顺序执行验收脚本
DiskManager、BufferPoolManager、LRUReplacer、CLOCKReplacerRow、Field、Schema、Column的序列化与反序列化TableHeap、TablePage、TableIteratorCatalogManager、TableMetadata、IndexMetadataBPlusTreeIndex、索引遍历器与索引扫描SeqScan、IndexScan、Insert、Delete、Update、Values执行器RecoveryManager与LockManager
- 全量单元测试通过:
45/45 - 已补充
CLOCKReplacer、RecoveryManager、LockManager的增强测试 - 已联调通过课程验收脚本中的主要流程
- Linux / macOS,或 Windows + WSL2
gcc/g++cmakemakepython3
说明:
- 仓库已包含生成后的 parser 源码,通常不需要额外安装
flex/bison - 推荐使用
Release构建以获得更稳定的性能表现
mkdir -p build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make -j4主要产物:
- 主程序:
build/bin/main - 全量测试:
build/test/minisql_test - 单项测试:
build/test/<test_name>
启动交互式 MiniSQL:
cd build/bin
./main运行全部单元测试:
cd build/test
./minisql_test --gtest_color=no运行单个测试示例:
cd build/test
./lock_manager_test --gtest_color=no使用脚本顺序执行全部测试目标:
python3 scripts/run_all_tests.py --build-dir build仓库中提供了按实验文档整理好的验收 SQL 和运行器:
- SQL 脚本:
scripts/acceptance_doc_order.sql - 运行脚本:
scripts/run_minisql_script.py
示例:
python3 scripts/run_minisql_script.py scripts/acceptance_doc_order.sql --binary build/bin/main --max-lines 8说明:
- 运行器会生成临时日志和中间数据,这些内容已加入
.gitignore - 若要复现实验报告中的
100000数据测试,需要自行准备对应输入数据文件;大文件与运行产物不随仓库提交
src/ 核心实现
test/ 单元测试
scripts/ 测试与验收脚本
thirdparty/ 第三方依赖
以下内容属于本地构建或运行产物,不纳入版本控制:
build/、build-wsl/、cmake-build-*dbfiles/、datas/、databases/acceptance_tmp/syntax_tree_*.txt- 本地报告、截图和大体积验收数据文件
TableHeap增加尾页缓存,避免批量插入时重复扫描尾页- 对
delete from table;增加整表删除快路径 - 为验收运行器增加步骤标题、结果摘要与时间汇总