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);