阅读时间: 约 55 分钟
难度等级: ⭐⭐⭐⭐⭐(高级)
文章目录
- 背景
- 一、功能域总览
- 二、表空间管理
- 2.1 表空间类型
- 2.2 Space 结构
- 2.3 表空间创建/删除/扩展/收缩
- 三、数据文件管理
- 3.1 数据文件组织
- 3.2 文件扩展策略
- 3.3 双写区(Double Write)
- 四、Buffer Pool 与页面管理
- 4.1 Buffer Pool 多分区
- 4.2 页面生命周期
- 4.3 LRU 淘汰
- 4.4 页面查找 Hash 表
- 五、堆表(Heap Table)组织
- 5.1 堆表页面结构
- 5.2 ITL 事务槽
- 5.3 行存储格式
- 5.4 行迁移 / 行链接
- 六、LOB 大对象存储
- 6.1 内联 LOB(≤3962 字节)
- 6.2 外联 LOB(>3962 字节)
- 6.3 Chunk 链表
- 6.4 LOB MVCC
- 6.5 LOB 空间回收
- 七、序列(Sequence)管理
- 7.1 NEXTVAL / CURRVAL 实现
- 7.2 序列缓存
- 7.3 多节点区间分配
- 7.4 序列 DDL
- 八、段(Segment)与 Extent 管理
- 8.1 Bitmap 分配(4 级自动分配)
- 8.2 段头结构
- 8.3 空间回收
- 九、闪回(Flashback)与回收站
- 9.1 DROP 回收站
- 9.2 TRUNCATE 回收站
- 9.3 FBDR(FlashBack Data Record)Undo 回溯
- 9.4 PURGE 清理
- 十、总结
背景
存储管理是 Cantian 数据库引擎物理存储层的核心,采用 Tablespace → Datafile → Segment → Extent → Page 经典五层存储分层。它涵盖表空间的创建/扩展/收缩、数据文件的双写区保护、Buffer Pool 的多分区 LRU 缓存、堆表的 ITL 行锁存储与行迁移/链接、LOB 大对象的 Chunk 链表存储、Sequence 的多节点区间分配、以及 Flashback 闪回与回收站机制。本章系统解析各子模块的架构设计与关键实现。
文章亮点:
- ✅ 四类表空间(DATA/TEMP/UNDO/SYSTEM)的分工与 Space 管理结构
- ✅ 双写区(Double Write)防止页断裂(Torn Page)的刷盘保护机制
- ✅ Buffer Pool 多分区设计、LRU 淘汰与页面状态生命周期
- ✅ 堆表 8KB 页面布局、ITL 事务槽与行迁移/链接处理
- ✅ LOB 内联/外联存储策略与 Chunk 链表 MVCC 机制
- ✅ 4 级 Bitmap 自动空间管理、Sequence 多节点区间预分配
一、功能域总览
存储管理功能域是 Cantian 数据库引擎物理存储层的核心,涵盖从逻辑空间的表空间管理到物理页面的 Buffer Pool 缓存,从堆表行存储格式到 LOB 大对象存储、Sequence 序列管理