openGauss开源数据库实战九

任务九 openGauss逻辑结构:表空间管理

任务目标

表空间是数据的容器。通过本任务,读者应能掌握表空间的管理,包括创建表空间、删除表空间、重命名表空间、查看表空间的情况。

实施步骤

一、创建表空间

使用用户omm打开一个Linux终端窗口,执行如下的命令,登录到openGauss数据库,并创建一个名为ustb_ts的表空间:

gsql -d postgres -p 26000 -r
CREATE TABLESPACE ustb_ts RELATIVE LOCATION 'tablespace/ustb_ts1';

二、查看系统有哪些表空间

执行下面的SOL语句和gsql元命令\db,查看openGauss数据库下有什么表空间:

SELECT spcname FROM pg_tablespace;
\db

三、查看表空间目前的大小

执行下面的SQL语句,查看表空间的大小(单位是字节,例子是新建的表空间,只有6个字节大小):

SELECT PG_TABLESPACE_SIZE('ustb_ts');
\q

在这里插入图片描述
有了表空间目前大小的数据,可以计算表空间的使用率:表空间的使用率=表空间的大小/表空间所在磁盘分区的大小×100%

四、查看某个表空间下有哪些对象

1.查看数据库的默认表空间下有哪些对象

使用Linux用户omm,打开一个Linux终端窗口,执行如下命令和SOL语句,用数据库用户
student连接openGauss DBMS的数据库studentdb:

gsql-d studentdb-h 192.168.100.91-U student-p26000-W student@ustb2020-r

执行下面的SQL语句,查看数据库studentdb的默认表空间下有哪些对象:

with objectInDefaultTS as
         ( select relname, relkind, relpages,pg_size_pretty(pg_relation_size(a.oid)),
                  reltablespace,relowner
           from pg_class a
           where a.relkind in ('r', 'i')  and reltablespace='0'
          )
select * 
from objectInDefaultTS 
-- where 子句中过滤条件是:结果记录不是以pg_%开头,或者不是以gs_开头
-- 设p表示结果记录以pg_%开头;q表示结果记录以gs_开头, 
-- 使用德摩根定律  not(p or q)⇔(not p) and (not q)进行等价转换
-- where子句中的过滤条件改写为:结果记录既不是以pg_%开头,并且也不是以gs_开头
where relname not like 'pg_%' and relname not like 'gs_%' and relname not like 'sql_%'
order by relpages desc;
2.查看数据库的非默认表空间下有哪些对象

由于当前数据库studentdb的默认表空间是student_ts,为了进行测试,首先在表空间ustb_ts
中为数据库studentdb创建一个测试表ttt:

create table tt(coll varchar(10))tablespace ustb ts

执行下面的SOL语句,查询数据库studentdb的非默认表空间ustb_ts下有哪些对象:

create table ttt(col1 varchar(10)) tablespace ustb_ts;
select relname,relkind,relpages,pg_size_pretty(pg_relation_size(a.oid)),
       reltablespace,relowner
from pg_class a, pg_tablespace tb
where a.relkind in ('r', 'i')
and a.reltablespace=tb.oid
and tb.spcname='ustb_ts'
order by a.relpages desc;

执行下面的SQL语句,删除测试表ttt,并退出gsql会话:

drop table ttt;
\q

五、重命名表空间

使用用户omm打开一个Linux终端窗口,执行如下的命令,登录到openGauss数据库,将表
空间ustb_ts命名为app_ts:

gsql -d postgres -p 26000 -r
ALTER TABLESPACE ustb_ts RENAME TO app_ts;

执行下面的gsql命令,查看数据库当前的表空间信息:

\db

在这里插入图片描述

六、删除表空间

用户必须是表空间的Owner或者系统管理员才能删除表空间。执行下面的SQL语句,删除表
空间app_ts:

DROP TABLESPACE app_ts;

执行下面的gsql命令,再次查看数据库当前的表空间信息,并退出gsql:

\db
\q
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值