更新时间:2024-05-20 GMT+08:00
Heap空间管理
Ustore使用Free Space Map(FSM)文件记录了每个数据页的空闲空间,并且以树的结构组织起来。每当用户想要对某个表执行插入操作或者是非原位更新操作时,就会从该表对应的FSM中进行快速查找,查看当前FSM上记录的最大空闲空间是否可以满足插入所需的空间要求,如果满足则返回对应的blocknum用于执行插入操作,否则执行拓展页面逻辑。
每一个表或者分区对应的FSM结构存放在一个独立的FSM文件中,该FSM文件与表数据放在相同的目录下。例如,假设表t1对应的数据文件为32181,则其对应的FSM文件为32181_fsm。FSM内部同样是以数据块的格式存储,这里称为FSM block,FSM block之间的逻辑结构组成了一棵有三层节点的树,树的节点在逻辑上是大顶堆关系。每次在FSM上查找时从根节点进行,一直查找到叶子节点,然后在叶子节点内搜索到一个可用的页面并返回给业务用于执行后续操作。该结构不保证和数据页实际可用空间保持实时一致,会在DML的执行过程中进行维护。Ustore会在Auto Vacuum的过程中概率性对该FSM进行修复重建。
父主题: Relation