GBase 8s内存不足,扩充表空间

数据库空间是一个逻辑概念,有多个称为Chunk的物理文件组成,用于存储表或索引的数据。
不同的数据库空间可以使用不同的页大小,以便于进行存储性能优化。

1.查询当前表空间大小

切换到 gbasedbt用户执行 

onstat -d

存储结构介绍(包括物理存储单元、逻辑存储单元、大对象存储)
  一个GBase 8s实例Instance可以创建多个dbspace,一个dbspace可以包含多个物理chunk,一个chunk分成多个连续扩展区extent,一个表或者索引占用的空间被称为一个tablespace,一个extent包含多个物理页page。
其中,dbspace、tablespace和extent属于逻辑存储单元;chunk和page属于物理存储单元。
(1)chunk
chunk就是用于存储数据的连续磁盘空间,也就是存储数据库数据的文件或者裸设备。
一个chunk可以是一个裸设备(Raw Device)或者一个UNIX文件(Cooked File)。
一个chunk最大可以是4TB,最多可以有32767个chunk。
root chunk包含整个数据库保留页及系统表等信息。一般将物理日志、逻辑日志迁移到单独的dbspace上。
一个非root chunk主要存储表、索引的数据(Tablespace),划分为多个连续的extent。
(2)page
数据页page是最基本的存储单元,是最小的I/O单元。

磁盘的一个数据页读取到内存就会分配一个同样大小的内存page来存储。
(3)计算方式

如datadbs1_1文件的size是1419748,它对应的dbs号码为6,Dbspaces信息中number为8的数据库空间大小为16384,所以这个文件的操作系统中的大小为1419748* 16384 = 23261151232 ,换算成G为:23261151232/1024/1024/1024=21.66G

当前GBase 8s 数据库实例将文件保存在/u01/GBASE/gbase/gbaseserver_dbs中,可以通过ll命令查看操作系统中文件的大小(字节大小)。

2.拓展表空间

(1)在/u01/GBASE/gbase/gbaseserver_dbs下创建chunk物理文件datadbs1_2

touch datadbs1_2

(2)给文件授权

chmod 660 datadbs1_2

(3)给datadbs1增加空间

onspaces -a datadbs1 -p /u01/GBASE/gbase/gbaseserver_dbs/datadbs1_2  -o 0 -s 10240

格式为  

onspaces -a 空间名称 -p 拓展的文件路径  -o 0 -s 扩充字节大小

当前语句为  给datadbs1 增加10240字节(10M)的存储

(4)查询是否扩充成功

onstat -d

3.补充:自动拓展

(1)将新增的chunk的表空间设置为自动拓展

进入数据库

dbaccess sysadmin -

设置自动拓展

execute function task ("modify chunk extendable",8);

格式为 execute function task ("modify chunk extendable",chunk的序号);

 查询是否设置成功  flags变更为:P0-BED

 (2)禁用自动拓展

进入数据库

dbaccess sysadmin -

设置禁用自动拓展

execute function task ("modify chunk extendable off",8);

posted @ 2023-08-15 11:01  远山伴痴人  阅读(780)  评论(0编辑  收藏  举报