GBase 8s
架构原理
文章

【转载“GBase 8s数据库”公众号】 GBase 8s 存储结构:从物理页到逻辑空间的全面解析

发表于2026-06-30 13:33:2130次浏览1个评论

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


一、GBase 8s 存储结构总览

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

  • 物理存储单元直接对应磁盘上的实际数据组织形式,包括页(Page)和块(Chunk)。
  • 逻辑存储单元则是数据库为管理方便而抽象出的概念,包括数据库空间(DbSpace)、表空间(TableSpace)和段(Extent)。

77bb58eb-25c2-4dd1-b9b2-f0af6d3cca20.png

一个 GBase 8s 实例(Instance)可以创建多个 DbSpace,一个 DbSpace 可以包含多个物理 Chunk,一个 Chunk 划分为多个连续的段,一个表或索引占用的空间被称为一个 TableSpace,一个段包含多个物理页 Page。其中,DbSpace、TableSpace 和段属于逻辑存储单元;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 描述信息           |
+----------------------------------+
  • 页头:占用 24 字节空间,包含页的地址信息、校验位、标记位、记录数计数器等元数据
  • 数据部分:以 Slot 的方式存储实际的行记录或索引键,一个数据页最多能存储 255 个 Slot
  • 页尾:包含时间戳和每个 Slot 的描述信息

2.2 块(Chunk)

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

参数项 数值
单个 Chunk 最大容量 4 TB
单个实例最多 Chunk 数 32,767
Root Chunk 包含保留页及系统表等关键信息
非 Root Chunk 存储表、索引数据,划分为多个连续的段

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

3.1 数据库空间(DbSpace)

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

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

DbSpace 类型 用途说明
Root DbSpace 根目录,存储保留页及系统数据库信息(如 sysmaster、sysadmin 等
Plog DbSpace 物理日志空间,存储物理日志文件
Llog DbSpace 逻辑日志空间,存储逻辑日志文件
Temp DbSpace 临时表空间,存储临时表及排序、Join 所需的临时空间
Data DbSpace 普通表空间,存储用户定义的表、索引数据
Blobspaces 简单大对象空间,存储简单大对象(TEXT 或 BYTE 类型)
Sbspaces 智能大对象空间,存储智能大对象(CLOB 或 BLOB 类型)

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 核心概念对照表

GBase 8s 概念 Oracle 对应概念 说明
Page Data Block 都是最小 I/O 单元。GBase 8s 默认 2KB,Oracle 默认 8KB,均可配置
Extent Extent 都是物理上连续的存储单元集合,是空间分配的基本单位
TableSpace Segment 描述一个表/索引所占用的空间
Chunk Datafile 物理存储载体,GBase 8s 的 Chunk 可以是裸设备或文件系统文件;Oracle 的 Datafile 是操作系统层面的物理文件
DbSpace Tablespace Chunk/Datafile 的集合,逻辑存储管理层
Instance Instance 数据库服务运行时的进程和内存结构的集合
Database Schema 数据的逻辑集合,一个实例可管理多个数据库

4.2 层次结构对比

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

Instance(实例)
  |-- DbSpace(数据库空间)
       |-- Chunk(物理块)
            |-- Extent(段)
                 |-- Page(数据页)
                      |-- Row(数据行 / Slot)

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

Instance(实例)
  |-- Tablespace(表空间)
       |-- Datafile(数据文件)
            |-- Extent(区)
                 |-- Data Block(数据块)
                      |-- Row(数据行)

五、大对象存储

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

5.1 简单大对象

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

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

5.2 智能大对象

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

区域名称 功能描述
元数据区域 保存标识 Sbspace 关键信息及 Sbspace 上的每个智能大对象的元数据
用户数据区域 存储实际的智能大对象数据
保留区 供元数据区域和用户数据区域扩展时分配

六、存储限制

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

存储限制(以 2KB Page Size 为例):

存储限制项 最大值
单个 Chunk 最大容量 4 TB
单个实例最多 Chunk 数 32,767
单个实例最多 DbSpace 数 2,047
一页最多包含的数据行数 255
一个表最大行数 4,277,659,295
表最大支持的列数 32,767
单个实例最大支持的数据库数 21,000,000
单个实例最大支持的表数 477,102,080

七、总结

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

评论

登录后才可以发表评论
用户头像
XX发表于 2个月前
感谢分享