logo
GBase 8s
其他
文章

南大通用GBase 8s 数据库存储布局解析

路路路
发表于2024-12-18 15:29:46337次浏览0个评论

在数据库的世界里,存储布局是构建高效、稳定系统的基础。GBase8s,作为一款国产数据库系统,其存储布局设计尤为关键,本文将探讨GBase8s数据库DBSpace中chunk的布局的系统结构。

GBase8s存储的整体布局

GBase8s存储的整体布局如下图:

Dbspace、blobspace和sbspace是一个或多个chunks的逻辑集合。

dbspace 的chunk 包含tblspaces(表空间)形式的数据和索引页。GBASE8S 中的第一个dbspace始终包含第一个chunk(也叫做root chunk)。

dbspace 1始终是root dbspace。

blobspace块包含BYTE和TEXT数据。

sbspace区块包含智能大对象(BLOB和CLOB)数据和元数据页面,以帮助管理数据。

本系列文章介绍DBSpace,本文介绍DBSpace中chunk的布局。

一个假想的root dbspace

root dbspace是GBase8s的第一个也是最复杂的dbspace。它包含系统的第一个chunk,即root chunk。与其他dbspace一样,可以随时间添加additional chunks。由于root dbspace作为一个整体永远无法删除,因此应该合理地配置root dbspace的初始chunk。

通常不要将database建在root dbspace中。数据应该分布在多个磁盘上,要做到这一点,您应该创建多个dbspace并将表分配给特定的dbspace(或在dbspace之间分片)。

最初,物理日志和至少三个逻辑日志位于root dbspace中。在调优阶段,通常会在其他dbspace中重新创建这些,以利用额外的磁盘驱动器。

root chunk的布局

root chunk就是root dbspace的第一个chunk,布局如下:

Reserved pages(保留页)

root chunk中初始块的前十二个页面是系统保留页面,用于系统跟踪信息,并在每个检查点期间更新。从第三个保留页面开始,页面被组织成冗余对,每个冗余对存储不同类型的结构,每对中的页面轮流作为最新版本。具体请参阅随后的文章。

Chunk free list

在每个chunk中,保留页面后面的页面是一个chunk free-list页面。chunk free-list页包含有关块中空闲extent(连续空闲页的组)的信息。

Tblspace tblspace

tblspace tblspace是一组页面,用于描述特定dbspace中所有tblspace的位置和结构。tblspace tblspace中的大多数页面具有相同的格式,并包含以下主要组件:

  • extents的数量和位置
  • 有关特殊列的信息(大型对象和VARCHAR数据)
  • 索引键信息的数组
  • 数据库和表名称

您可以通过运行oncheck -pe并查找${dbspace_name}:'gbasedbt'.tblspace来查找tblspace tblspace扩展区的位置:

[root@gbasehdr202 GBase8s]# oncheck -pe | grep -i tblspace
Description                                                    Offset(p)    Size(p) 
 rootdbs:'gbasedbt'.TBLSpace                                          13      250
 rootdbs:'gbasedbt'.TBLSpace                                        367      200
 rootdbs:'gbasedbt'.TBLSpace                                       30738       50
 rootdbs:'gbasedbt'.TBLSpace                                       31249      100
 plog:'gbasedbt'.TBLSpace                                              3       50
 llog:'gbasedbt'.TBLSpace                                              3       50
 datadbs1:'gbasedbt'.TBLSpace                                          3       50
 datadbs2:'gbasedbt'.TBLSpace                                          3       50
 datadbs3:'gbasedbt'.TBLSpace                                          3       50
 data8dbs1:'gbasedbt'.TBLSpace                                         3       50
 data8dbs2:'gbasedbt'.TBLSpace                                         3       50
 data8dbs3:'gbasedbt'.TBLSpace                                         3       50
 (0xa00001) tmpdbspace:'gbasedbt'.TBLSpace                            3       50
 sbspace1:'gbasedbt'.TBLSpace                                          3       50
 (0xc00001) tmpsbspace:'gbasedbt'.TBLSpace                            3       50

Database tblspace

数据库tblspace是GBase8s系统中所有数据库的列表,包括以下组件:

  • 数据库名称
  • 数据库所有者
  • 创建数据库的日期和时间
  • 此数据库的系统目录表的分区号
  • 显示数据库日志记录模式的标志

要查找数据库tblspace在服务器上的物理位置,请使用oncheck -pe命令生成扩展数据块,并查找分配给sysmaster:'gbasedbt'.sysdatabases的extents。

[root@gbasehdr202 GBase8s]# oncheck -pe | grep -i sysdatabases
Description                                                    Offset(p)    Size(p)
 sysmaster:'gbasedbt'.sysdatabases                                27447        4

非root chunk的布局

非root chunk有两类:

  • 除了root dbspace外的其他dbspace的第一个chunk。
  • 每个dbspaces的第二个及以后得chunk。

这两类chunk的布局如下:

Reserved pages

任何非root chunk 的前两个页面都是保留的。它们甚至没有用页头进行初始化。

Chunk free list

在每个chunk中,保留页面后面的页面是一个chunk free-list页。

Tblspace tblspace

每个dbspace都包含一个tblspace-tbspace,也称为分区表。tblspace的第一个extent 总是分配在dbspace的第一个chunk中。与任何其他tblspace一样,当需要额外的扩展数据块时,它们会被分配到dbspace中任何有空间的地方。

非root dbspace中分区表的初始和后续扩展区大小为50页。

汇总

通过上述分析,我们可以清晰地看到GBase 8s数据库存储布局从root chunk到非root chunk,每个部分都有其特定的功能和布局,确保了数据的高效管理和存储。

Layout of a Root Chunkdbspace中的第一个chunkdbspace中随后的chunks
Reserved pages       Reserved pages       Reserved pages       
Chunk free list page Chunk free list       Chunk free list     
Tblspace tblspace     Tblspace tblspace     无                   
Physical log         无                   无                   
Logical logs         无                   无                   
Database tblspace     无                   无                   
sysmaster            无                   无                   
sysutils             无                   无                   
sysuser               无                   无                   
sysadmin             无                   无                   
Tblspace extents     Tblspace extents     Tblspace extents     

 

后续

本文是对GBase8s数据库存储布局的初步介绍,本文中涉及的内容将在后续DBSpace的一系列文章中介绍。我们将继续发布系列文章,深入讨论DBSpace的各个方面。敬请关注,以获取更多实用信息。

评论

登录后才可以发表评论