G术时刻 | 南大通用GBase 8s数据库的Chunk Free List机制解析(一)

0 阅读2分钟

在数据库管理中空间分配和回收是确保数据高效存储的关键操作。南大通用GBase 8s数据库系统通过其独特的Chunk Free List机制,精确地追踪每个chunk中的可用空间。下面我们就来了解这一机制的工作原理和重要性。

chunk free-list 概述

每个chunk都需要一种机制来跟踪其自身的可用空间。在每个chunk中的最后一个保留页面之后是chunk free list page。根据chunk中的碎片,该页面可以是多个页面中的一个,它包含指向未使用数据块的结构。每个结构或自由列表条目都包含两个元素:未声明范围的起始页和以页为单位测量的自由范围的长度。

chunk free list的布局如下图:

影响chunk free list的操作

1、分配空间

当在chunk中分配extent 时,可用空间的损失表现为从chunk free list中删除条目,或者修改条目中的一个或两个元素。

2、释放空间

当表被删除时,或者在某些情况下当表被更改时,ids 会释放空间。当回收可用空间时,可以将新条目添加到区块空闲列表中。如果新释放的空间与现有的空闲空间相邻,则仅改变相关联的空闲列表条目中的长度元素;否则,将创建一个新条目。

附加的chunk free list page

如果一个chunk 变得如此碎片化,以至于初始的chunk 空闲列表页面充满了条目,则会分配一个额外的chunk free list page。然后,这些页面以链接列表的形式链接在一起。这个链中的每个链接只负责其自身和下一个chunk空闲列表页之间的扩展。这种设计需要在各个环节之间进行良好的协调。