- 源码位置: src/main/com/BPlusTree/V4
- 测试文件位置: test/java/com/BPlusTree/V4
考虑
- 增删改查
- 分裂页
- 合并页
- 并发性能
ACID 是数据库管理系统 (DBMS) 中事务处理的重要概念,它代表了四个关键属性:原子性 (Atomicity)、一致性 (Consistency)、隔离性 (Isolation) 和持久性 (Durability)。这些属性确保了数据库操作的可靠性和正确性。以下是每个属性的简要解释:
- 原子性 (Atomicity): 原子性保证了事务中的所有操作要么全部完成,要么全部不完成。如果事务中的某个操作失败,整个事务将回滚,数据库状态将回到事务开始前的状态。
- 一致性 (Consistency): 一致性确保事务将数据库从一种合法状态转换到另一种合法状态。事务在执行过程中,不会破坏数据库的完整性约束。
- 隔离性 (Isolation): 隔离性确保同时执行的事务互不干扰。一个事务的中间状态对其他事务是不可见的。这通常通过多种隔离级别(如读已提交、可重复读、串行化)来实现。
- 持久性 (Durability): 持久性保证在事务完成并提交之后,其结果将永久保存,即使系统发生故障(如电源故障或崩溃),这些结果也不会丢失。
含义 | 名称 | 长度 |
---|---|---|
索引的类型 | 13 | |
索引的长度 | 10 |
- 页大小: 参考 MySQL, 默认16KB 每一行的内容
索引页内容 | 所占字节大小 | 说明 |
---|---|---|
File Header | 38 | 文件头部,页的通用信息 |
Page Header | 56 | 页面头部,数据页专有的一些信息 |
Infimum+Supremum | 26 | 最小记录和最大记录,两个虚拟的行记录 |
User Records | 大小不确定 | 用户记录,实际存储的行记录内容 |
Free Space | 大小不确定 | 空闲空间,页中尚未使用的空间 |
Page Directory | 大小不确定 | 页面记录,页中某些记录的相对位置 |
File Trailer | 8 | 文件尾部,检验页是否完成 |
为了确保行级别的事务, 操作精细度为行而不是页
含义 | 名称 | 长度 |
---|---|---|
变长字段长度列表 | ||
NULL值列表 | ||
记录头信息 | 40 | |
数据 | 不确定 | |
事务ID | DB_TRX_ID | 6 |
事务回滚指针 | DB_ROLL_PTR | 7 |
记录头信息是由固定5个字节组成。5个字节也就是40个二进制位,不同的位代表不同的意思。
含义 | 名称 | 长度 | 备注 |
---|---|---|---|
删除标注位 | delete_mask | 1 | |
当前页的位置 | heap_no | 13 | |
记录类型 | record_type | 3 | 0表示普通类型,1表示B+树非叶子节点记录,2表示最小记录,3表示最大记录 |
记录数 | n_owned | 4 | 当前行的记录个数 |
下一条记录的相对位置 | next_record | 16 |