Skip to content

Latest commit

 

History

History
63 lines (55 loc) · 3.48 KB

README.V4.md

File metadata and controls

63 lines (55 loc) · 3.48 KB

V4版本

  • 源码位置: src/main/com/BPlusTree/V4
  • 测试文件位置: test/java/com/BPlusTree/V4

考虑

  1. 增删改查
  2. 分裂页
  3. 合并页
  4. 并发性能

ACID

ACID 是数据库管理系统 (DBMS) 中事务处理的重要概念,它代表了四个关键属性:原子性 (Atomicity)、一致性 (Consistency)、隔离性 (Isolation) 和持久性 (Durability)。这些属性确保了数据库操作的可靠性和正确性。以下是每个属性的简要解释:

  1. 原子性 (Atomicity): 原子性保证了事务中的所有操作要么全部完成,要么全部不完成。如果事务中的某个操作失败,整个事务将回滚,数据库状态将回到事务开始前的状态。
  2. 一致性 (Consistency): 一致性确保事务将数据库从一种合法状态转换到另一种合法状态。事务在执行过程中,不会破坏数据库的完整性约束。
  3. 隔离性 (Isolation): 隔离性确保同时执行的事务互不干扰。一个事务的中间状态对其他事务是不可见的。这通常通过多种隔离级别(如读已提交、可重复读、串行化)来实现。
  4. 持久性 (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