GBase 8s 存储体系:从 Chunk 存储块到表空间的完整拆解

发布时间:2026-06-26

理解存储结构是掌握数据库原理的关键一步。本文系统介绍 GBase 8s 数据库从物理存储单元到逻辑存储单元的层次关系,并与 Oracle 存储结构进行对照。

一、GBase 8s 存储结构总览

GBase 8s 的存储结构采用层次化设计,从底层到顶层依次由物理存储单元和逻辑存储单元组成。

  • 物理存储单元直接对应磁盘上的实际数据组织形式,包括页(Page)和块(Chunk)。

  • 逻辑存储单元则是数据库为管理方便而抽象出的概念,包括数据库空间(DbSpace)、表空间(TableSpace)和段(Extent)。

一个 GBase 8s 实例(Instance)可以创建多个 DbSpace,一个 DbSpace 可以包含多个物理 Chunk,一个 Chunk 划分为多个连续的段,一个表或索引占用的空间被称为一个 TableSpace,一个段包含多个物理页 Page。其中,DbSpace、TableSpace 和 Extent 属于逻辑存储单元;Chunk 和 Page 属于物理存储单元。

二、物理存储单元:Page 与 Chunk

2.1 数据页(Page)

数据页(Page)是 GBase 8s 中最基本的存储单元,也是数据库服务的最小 I/O 单元。所有的系统信息和用户数据都被存储在数据页上,表的记录、索引的索引键都以 Page 为存储单位进行管理。

在大多数系统中,默认的数据页大小为 2KB。数据页大小是可配置的,在创建数据空间时指定,最大值为 16KB。GBase 8s 支持不同大小的数据页:2KB、4KB、8KB、16KB,管理员可以根据实际业务场景选择合适的页大小。

从内部结构来看,一个数据页总体上分为三部分:

  • 页头:占用 24 字节空间,包含页的地址信息、校验位、标记位、记录数计数器等元数据

  • 数据部分:以 Slot 的方式存储实际的行记录或索引键,一个数据页最多能存储 255 个 Slot

  • 页尾:包含时间戳和每个 Slot 的描述信息

2.2 块(Chunk)

块(Chunk)是用于存储数据的连续磁盘空间,可以是一个裸设备(Raw Device)或其一部分,也可以是文件系统中的一个文件(Cooked File)。Chunk 是数据库与操作系统存储之间的桥梁,为数据提供了物理上的连续存储区域。

三、逻辑存储单元:DbSpace、TableSpace 与 Extent

3.1 数据库空间(DbSpace)

数据库空间(DbSpace)是 Chunk 的集合,是 GBase 8s 中核心的逻辑存储管理单元。创建 DbSpace 时至少包含一个 Chunk。

在实际生产环境中,通常按照 DbSpace 的作用进行规划分类:

3.2 表空间(TableSpace)

表空间(TableSpace)是一个逻辑概念,是针对某个表而言的存储描述。物理上,TableSpace 是某个表使用的所有段的集合。GBase 8s 用 TableSpace 来描述一个表或索引所占用的空间信息,一个 TableSpace 可以分布在不同的 DbSpace 或 Chunk 上。

3.3 段(Extent)

段(Extent)是连续数据页的集合,是 TableSpace 存储空间分配的基本单位。在创建表时,GBase 8s 会根据 Extent Size 确定该表的初始空间;当数据不断增长导致空间不足时,数据库以段为单位进行空间扩展,可以通过Next Size 参数来控制每次空间扩展的大小。

四、GBase 8s 与 Oracle 存储结构对照

建立与 Oracle 的对照关系有助于理解 GBase 8s 的存储结构。两者的存储层次在设计上高度相似,概念之间存在明确的映射关系。

4.1 核心概念对照表

4.2 层次结构对比

GBase 8s 存储层次(从大到小):

Oracle 存储层次(从大到小):

五、大对象存储

GBase 8s 针对大对象数据提供了专门的存储机制,分为简单大对象和智能大对象两类。

5.1 简单大对象

简单大对象(TEXT 或 BYTE 类型)可以存储在普通的 DbSpace 中,也可以存储在专门的 Blobspace 中。当存储在 Blobspace 时,数据库通过虚拟段单独使用较小的缓存将数据直接写入磁盘,不占用 Buffer Pool 内存空间。

Blobspace 中的基本存储单元是 blobpage,其大小可被配置为数据库服务器数据页(Page)大小的整数倍。

5.2 智能大对象

智能大对象(CLOB 和 BLOB 类型)必须存储在 Sbspace 上。Sbspace 的第一个 Chunk 包含三个部分,其他 chunk 可以共用第一个 chunk 的元数据区域:

六、存储限制

了解 GBase 8s 的存储限制对于数据库设计和容量规划至关重要。

存储限制:

七、总结

GBase 8s 的存储结构从物理层的 Page 和 Chunk,到逻辑层的Extent、TableSpace 和 DbSpace,每一层都有明确的职责和作用。理解这一层次关系,有助于进行存储规划、性能调优和故障排查。在实际工作中,建议根据业务数据特征合理选择数据页大小,规划 DbSpace 的分类布局,并监控段的增长情况。