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

B站影视 2024-12-20 10:34 2

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


更多精彩内容尽在南大通用GBase技术社区,南大通用致力于成为用户最信赖的数据库产品供应商。

在数据库的世界里,存储布局是构建高效、稳定系统的基础。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 tblspaceDescription 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 sysdatabasesDescription 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页。

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

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

汇总

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

后续

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


来源:阿杜科技小伙

相关推荐