GBase 8s
安装配置
文章

【转载“GBase 8s数据库”公众号】GBase 8s 数据空间(Dbspace)管理指南

发表于2026-08-25 13:30:18242次浏览1个评论

数据空间(Dbspace)是 GBase 8s 数据库的逻辑存储结构,所有数据库对象均存储于指定的数据空间内。本文系统梳理数据空间的查看、创建、修改与删除操作。


一、数据空间概述

在 GBase 8s 中,Dbspace 是数据库对象(表、索引等)的逻辑存储容器。一个 Dbspace 由一个或多个 chunk(物理数据文件)组成,所有数据库对象都必须指定一个存放的 Dbspace。

管理 Dbspace 有两种方式:SQL 管理 API 和 onspaces 命令行工具,支持创建、删除、扩展等多种操作,两种方式底层机制一致,可根据运维场景选择。

权限要求:Dbspace 的创建、修改、删除等管理操作属于实例级管理行为,仅数据库管理员(如 gbasedbt 用户或具有 DBSA 权限的角色)可执行,普通数据库用户无权操作。


二、查看数据空间

2.1 SQL 查询方式

sysmaster 数据库下执行查询 SQL:

SELECT d.dbsnum, trim(d.name) name, d.pagesize, 
       format_units(sum(c.chksize),'P') dbs_size
FROM sysmaster:sysdbspaces d, sysmaster:syschunks c
WHERE d.dbsnum = c.dbsnum
GROUP BY 1, 2, 3
ORDER BY 1;

输出示例:

dbsnum name pagesize dbs_size
1 rootdbs 2048 154 MB
2 plogdbs 2048 64.0 MB
3 llogdbs 2048 64.0 MB
4 datadbs1 2048 64.0 MB
5 tmpdbspace 2048 64.0 MB
6 sbspace1 2048 64.0 MB

format_units 函数可将 KB 自动换算为 MB、GB 等可读单位。

2.2 onstat 命令方式

[gbasedbt@node2 ~]$ onstat -d
ol_gbasedbt1210_4: On-Line -- Up 00:04:27 -- 2064448 Kbytes

Dbspaces
address          number   flags      fchunk   nchunks  pgsize   flags    owner    name
b5a8d080         1        0x70001    1        1        2048     N  BA    gbasedbt rootdbs
b5be5868         2        0x1070001  2        1        2048     N PBA    gbasedbt plogdbs
b629f080         3        0x60001    3        1        2048     N  BA    gbasedbt llogdbs
bebc9080         4        0x60001    4        1        2048     N  BA    gbasedbt datadbs1
bebdc080         5        0x42001    5        1        2048     N TBA    gbasedbt tmpdbspace
bebdf080         6        0x68001    6        1        2048     N SBA    gbasedbt sbspace1
 6 active, 2047 maximum

Chunks
address          chunk/dbs     offset     size       free       bpages     flags pathname
b5a90080         1      1      0          78848      55198                 PO-B-- /data/gbase/rootdbs
bebe5080         2      2      0          32768      0                     PO-BE- /data/gbase/plog_p_1
b5a8d2d0         3      3      0          32768      15                    PO-BE- /data/gbase/llog_p_1
b629f2d0         4      4      0          32768      32715                 PO-B-- /data/gbase/datadbs1_p_1
bebd92d0         5      5      0          32768      32556                 PO-BE- /data/gbase/tmpdbspace_p_1
bebdc2d0         6      6      0          32768      23802      23802      POSB-- /data/gbase/sbspace1_p_1
                                 Metadata 1745       8466       1745
 6 active, 32766 maximum

NOTE: The values in the "size" and "free" columns for DBspace chunks are
      displayed in terms of "pgsize" of the DBspace to which they belong.


Expanded chunk capacity mode: always

该命令输出包含两部分:

  • ​Dbspaces​:展示各 Dbspace 的编号、标志、chunk 数、页大小、所有者等信息
  • ​Chunks​:展示各 chunk 的序号、所属 Dbspace、偏移量、大小、空闲页数、标志及路径

​提示​:onstat -d 中的 size 和 free 列以所属 Dbspace 的页大小为单位显示,需注意单位换算。例如,页大小为 16KB 时,size 列显示 524288 对应实际空间为 8GB(524288 × 16KB)。


三、创建数据空间

3.1 SQL 管理 API 方式

在 sysadmin 数据库中执行 task() 或 admin() 函数:

EXECUTE FUNCTION task('create dbspace','datadbs2','/data/gbase/datachk2','1024000','0','16');

参数说明:

  • 第 1 个参数:操作类型(create dbspace)
  • 第 2 个参数:Dbspace 名称
  • 第 3 个参数:数据文件路径
  • 第 4 个参数:文件大小(KB)
  • 第 5 个参数:偏移量(通常为 0)
  • 第 6 个参数:页大小(KB,Linux 下默认 2KB,最大 16KB,须为 2KB 的倍数)

3.2 onspaces 命令行方式

# 1. 创建数据文件并设置权限
[gbasedbt@node2 ~]$ touch /data/gbase/datachk3
[gbasedbt@node2 ~]$ chmod 660 /data/gbase/datachk3
[gbasedbt@node2 ~]$ chown gbasedbt:gbasedbt /data/gbase/datachk3

# 2. 创建 Dbspace
[gbasedbt@node2 ~]$ onspaces -c -d datadbs3 -p /data/gbase/datachk3 -o 0 -s 1024000 -k 16

参数说明:

  • -c:创建(create)
  • -d:Dbspace 名称
  • -p:数据文件路径
  • -o:偏移量
  • -s:大小(KB)
  • -k:页大小(KB)

​注意​:执行 onspaces 前需确保数据文件(chunk)已存在且权限为 660,所有者和组均为 gbasedbt。权限不满足此条件时,onspaces 命令将执行失败。


四、修改数据空间

4.1 扩展现有 chunk(SQL API 方式)

在 sysadmin 数据库中执行 task() 或 admin() 函数将现有 chunk 标记为可扩展,并指定扩展大小:

-- 设置 chunk 序号为 4 的数据文件可扩展
EXECUTE FUNCTION task('modify chunk extendable on', 4);

-- 扩展 chunk 序号为 4 的数据文件,增加 512000 KB(前提为该chunk已被设置为可扩展)
EXECUTE FUNCTION task('modify chunk extend', 4, 512000);

4.2 添加新 chunk

当现有 Dbspace 容量不足时,可通过添加新 chunk 进行扩展。

​SQL 方式:​

在 sysadmin 数据库中执行 task() 或 admin() 函数:

EXECUTE FUNCTION task('add chunk','datadbs1','/data/gbase/datachk1_2','512000','0');

onspaces 方式:

[gbasedbt@node2 ~]$ touch /data/gbase/datachk1_3
[gbasedbt@node2 ~]$ chmod 660 /data/gbase/datachk1_3
[gbasedbt@node2 ~]$ chown gbasedbt:gbasedbt /data/gbase/datachk1_3
[gbasedbt@node2 ~]$ onspaces -a datadbs1 -p /data/gbase/datachk1_3 -o 0 -s 512000

五、删除数据空间

删除操作分为 删除 chunk 和 删除整个 Dbspace 两个层级,均要求目标空间内无数据残留。

5.1 删除 chunk

SQL 方式:

EXECUTE FUNCTION task('drop chunk','datadbs1','/data/gbase/datachk1_3','0');

onspaces 方式:

[gbasedbt@node2 ~]$ onspaces -d datadbs1 -p /data/gbase/datachk1_2 -o 0 -y

5.2 删除整个 Dbspace

SQL 方式:

EXECUTE FUNCTION task('drop dbspace','datadbs2');

onspaces 方式:

[gbasedbt@node2 ~]$ onspaces -d datadbs3 -y

​重要提示​:

  1. chunk 或 Dbspace 中必须无数据,才允许删除;
  2. 删除 Dbspace 后,对应的操作系统文件不会自动删除,需手动清理;
  3. 使用 -y 参数可跳过确认提示,适用于脚本化运维场景。

六、操作方式对比

操作类型 SQL 管理 API onspaces 命令 备注
创建 Dbspace ✅ 支持 ✅ 支持 两者等价
查看 Dbspace ✅ 支持(SQL 查询) ✅ 支持(onstat -d) SQL 方式更灵活直观
扩展现有 chunk ✅ 支持 ❌ 不支持 仅 SQL API 支持
添加新 chunk ✅ 支持 ✅ 支持 两者等价
删除 chunk ✅ 支持 ✅ 支持 两者等价
删除 Dbspace ✅ 支持 ✅ 支持 两者等价

七、总结

数据空间管理是 GBase 8s DBA 的基础技能。本文从查看、创建、修改、删除四个维度,系统梳理了 SQL 管理 API 与 onspaces 命令行两种操作方式,并进行了参数释义和注意事项说明。

在实际生产环境中,建议遵循以下原则:

  1. ​分散存储​:将物理日志、逻辑日志、业务数据分别存放于独立 Dbspace,避免 I/O 争用;
  2. ​预留扩展​:创建 Dbspace 时预留一定余量,或启用 chunk 自动扩展功能,避免空间不足导致业务中断;
  3. ​定期巡检​:通过 onstat -d 或 SQL 查询监控各 Dbspace 使用率,及时扩容。

掌握这些操作,将帮助你从容应对 GBase 8s 的存储管理挑战,为数据库的稳定运行保驾护航。

评论

登录后才可以发表评论
sherq1989发表于 1个月前
很详细