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

在数据库的世界里,存储布局是构建高效、稳定系统的基础。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 Chunk | dbspace中的第一个chunk | dbspace中随后的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的各个方面。敬请关注,以获取更多实用信息。
评论


热门帖子
- 12023-05-09浏览数:16930
- 22020-05-11浏览数:10370
- 32019-04-26浏览数:10345
- 42023-09-25浏览数:9809
- 52023-07-04浏览数:9561