云数据库 GAUSSDB-RCR Uheap空闲空间管理
RCR Uheap空闲空间管理
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进行修复重建。当用户执行插入类型的DML语句,类似Insert/Non-Inplace Update(新页面)/Multi Insert时,会查询FSM结构,寻找到一个可以插入当前记录的空间。用户执行完DML操作后会根据当前页面的潜在空闲空间与实际空闲空间的差值来决定是否将该页面的空闲空间刷新到FSM上。该差值越大,即潜在空间大于实际空间越多,则该页面被更新至FSM的几率越大。FSM上会记录数据页的潜在空闲空间 ,在用户执行插入操作找到一个页面时,如果该页面上的空闲空间较大则直接插入,否则如果潜在空间较大则对页面执行清理后插入,最后如果空间不够则重新搜索FSM结构或者拓展总页面数量。更新FSM结构主要有以下几个位置,DML、页面清理、vacuum、拓展页面、分区合并、页面扫描等。
- 云数据库RDS for MySQL存储空间自动扩容_存储空间_自动扩容_MySQL云盘
- 华为云空间_华为云空间怎么登录_华为云空间在线登录
- GaussDB内核_GaussDB数据库内核_高斯数据库内核_华为云
- 云空间建站_云服务器ecs云空间_云空间云服务器
- GaussDB数据库空间规格_GaussDB文档_高斯数据库空间规格
- 华为云空间优惠券
- GaussDB监控_GaussDB数据库监控_高斯数据库监控_华为云
- GaussDB分析_GaussDB数据库分析_高斯数据库分析_华为云
- GaussDB(for MySQL)并行查询_GaussDB(for MySQL)内核_GaussDB(for MySQL)并行执行_PQ
- GaussDB(for MySQL)规格变更_包周期库扩容_变更CPU_存储扩容