4.1. 数据空间操作
本章节将介绍GBase 8s数据库中数据空间相关的基本语法和示例。
数据空间是数据库的逻辑存储结构,所有数据库对象均存储于指定的数据空间内。
4.1.1. 创建数据空间
创建数据空间有两种方式,使用SQL管理API方式和管理命令onspaces方式
使用gbasedbt用户,在sysadmin中执行CREATE DBSPACE语句创建数据空间:
EXECUTE FUNCTION task('create dbspace','datadbs02','/data/gbase/datachk02','1024000','0','16');
或者
EXECUTE FUNCTION admin('create dbspace','datadbs02','/data/gbase/datachk02','1024000','0','16');
参数说明:创建dbspace,空间名称,空间使用的文件路径,大小(KB),偏移量大小,使用的页大小(Linux下默认2KB,最大16KB,使用2KB的倍数)
对应的管理命令方式
使用gbasedbt用户,创建数据空间使用的文件,创建数据空间
[gbasedbt@node2 ~]$ touch /data/gbase/datachk03
[gbasedbt@node2 ~]$ chmod 660 /data/gbase/datachk03
[gbasedbt@node2 ~]$ onspaces -c -d datadbs03 -p /data/gbase/datachk03 -o 0 -s 1024000 -k 16
参数说明:-c 创建,-d 空间名称,-p 空间使用的文件路径,-o 偏移量大小,-s 大小(KB),-k 页大小
4.1.2. 查看数据空间
查数据空间有两种方式,使用SQL方式和管理命令onstat 方式
使用gbasedbt用户,执行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 |0.98 GB |
|2 |plogdbs |2048 |0.98 GB |
|3 |llogdbs |2048 |0.98 GB |
|4 |sbspace01 |2048 |0.98 GB |
|5 |tempdbs01 |16384 |0.98 GB |
|6 |datadbs01 |16384 |0.98 GB |
|7 |datadbs02 |16384 |0.98 GB |
|8 |datadbs03 |16384 |0.98 GB |
对应的管理命令方式
使用gbasedbt用户,执行onstat -d 命令
On-Line -- Up 02:52:15 -- 3378128 Kbytes
Dbspaces
address number flags fchunk nchunks pgsize flags owner name
4ddf8028 1 0x70001 1 1 2048 N BA gbasedbt rootdbs
50626dc8 2 0x70001 2 1 2048 N BA gbasedbt plogdbs
50749028 3 0x60001 3 1 2048 N BA gbasedbt llogdbs
50749258 4 0x68001 4 1 2048 N SBA gbasedbt sbspace01
50749488 5 0x42001 5 1 16384 N TBA gbasedbt tempdbs01
507496b8 6 0x60001 6 1 16384 N BA gbasedbt datadbs01
512af880 7 0x60001 7 1 16384 N BA gbasedbt datadbs02
50c5ad58 8 0x60001 8 1 16384 N BA gbasedbt datadbs03
8 active, 2047 maximum
Chunks
address chunk/dbs offset size free bpages flags pathname
4ddf8258 1 1 0 512000 495437 PO-B-- /data/gbase/rootchk
5074a028 2 2 0 512000 11947 PO-B-- /data/gbase/plogchk
5074b028 3 3 0 512000 11947 PO-B-- /data/gbase/llogchk
5074c028 4 4 0 512000 477465 477465 POSB-- /data/gbase/sbspace01
Metadata 34482 25659 34482
5074d028 5 5 0 64000 63947 PO-B-- /data/gbase/tempchk01
50753028 6 6 0 64000 62829 PO-BE- /data/gbase/datachk01
50c5a028 7 7 0 64000 63947 PO-B-- /data/gbase/datachk02
512ad028 8 8 0 64000 63947 PO-B-- /data/gbase/datachk03
8 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
4.1.3. 修改数据空间
修改数据空间大小仅支持SQL管理API方式,仅能增大空间大小,而不能减小。
使用gbasedbt用户,在sysadmin库中执行修改
-- 设置chunk序号为8的数据文件可扩展
EXECUTE FUNCTION task('modify chunk extendable on', 8);
-- 设置扩展chunk序号为8的数据文件扩展大小为512000KB
EXECUTE FUNCTION task('modify chunk extend', 8, 512000);
通过增加数据文件的方式进行扩展有两种方式,使用SQL管理API方式和管理命令onspaces方式
使用gbasedbt用户,在sysadmin中执行add chunk语句增加数据空间:
EXECUTE FUNCTION task('add chunk','datadbs03','/data/gbase/datachk03_2','512000','0');
参数说明:增加chunk,空间名称,空间使用的文件路径,大小(KB),偏移量大小
对应的管理命令方式
使用gbasedbt用户,创建数据空间使用的文件,增加数据空间
[gbasedbt@node2 ~]$ touch /data/gbase/datachk03_3
[gbasedbt@node2 ~]$ chmod 660 /data/gbase/datachk03_3
[gbasedbt@node2 ~]$ onspaces -a datadbs03 -p /data/gbase/datachk03_3 -o 0 -s 512000
参数说明:-a 增加chunk,-d 空间名称,-p 空间使用的文件路径,-o 偏移量大小,-s 大小(KB)
4.1.4. 删除数据空间
删除数据空间有两种方式,使用SQL管理API方式和管理命令onspaces方式
使用gbasedbt用户,在sysadmin中执行drop chunk语句删除数据空间:
-- 从数据空间中删除chunk
EXECUTE FUNCTION task('drop chunk','datadbs03','/data/gbase/datachk03_3','0');
-- 删除数据空间
EXECUTE FUNCTION task('drop dbspace','datadbs02');
参数说明:删除chunk,空间名称,空间使用的文件路径,大小(KB),偏移量大小;
删除数据空间,空间名称;
注:chunk或者数据空间中无数据,才允许被删除;空间删除,对应的操作系统并不会同时删除。
对应的管理命令方式
使用gbasedbt用户,从数据空间中删除chunk,删除数据空间
[gbasedbt@node2 ~]$ onspaces -d datadbs03 -p /data/gbase/datachk03_2 -o 0 -y
[gbasedbt@node2 ~]$ onspaces -d datadbs03 -y
参数说明:-d 删除空间/chunk,-p 空间使用的文件路径,-o 偏移量大小,-y 确认删除