TL;DR

CMU 15-445/645 是 Andy Pavlo 教授主讲的数据库系统课程,覆盖缓冲池、索引(B+Tree)、查询优化、MVCC、分布式事务等核心主题。本文梳理完整学习路径。

课程概况

项目 说明
课程主页 15445.courses.cs.cmu.edu
视频 YouTube “CMU Database Group” 频道
教授 Andy Pavlo
难度 研究生级别,适合有操作系统基础

核心模块

1. 存储引擎(Lectures 3-6)

  • 缓冲池管理:Clock 算法 vs LRU-K
  • 页面布局:Slotted Pages、日志结构存储
  • Project #1:实现一个 Buffer Pool Manager

2. 索引(Lectures 7-10)

  • B+Tree:插入、删除、合并、分裂
  • Hash 索引:Extendible Hashing、Linear Hashing
  • Project #2:实现 B+Tree 索引

3. 查询引擎(Lectures 11-14)

  • 查询优化:RBO → CBO,Selinger 优化器
  • 执行模型:火山模型、向量化、JIT
  • Project #3:实现查询执行器(Join、Aggregation)

4. 事务与并发(Lectures 15-18)

  • MVCC:时间戳排序、OCC
  • 两阶段锁:死锁检测、层次锁
  • Project #4:实现两阶段锁和 MVCC

学习建议

  1. 先看 Lecture 1-2 了解课程全景和 C++ 前置
  2. 每个模块:看视频 → 读对应论文 → 做 Project
  3. 不要跳过论文:课程引用大量经典论文(ARIES、Raft、Spanner)
  4. 做 Project 时参考 BusTub 测试,不要只看功能描述

配套资源

资源 链接
BusTub 源码 github.com/cmu-db/bustub
课件 PDF 课程主页下载
中文笔记 GitHub 上多个中文笔记仓库
Discord CMU Database Group Discord

推荐进阶课程

完成 15-445 后可继续:

  • CMU 15-721:高级数据库系统(列存、JIT 编译、HTAP)
  • CMU 15-826:多媒体数据库与数据挖掘

总结

CMU 15-445 是数据库内核学习的标杆课程。跟着做完全部 4 个 Project,你将写出一个完整的磁盘型关系数据库引擎。

参考