暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

openGauss每日一练第7天 | 表空间的基本操作

原创 2021-12-07
1275

表空间

表空间对应于一个文件系统目录。

openGauss自带了两个表空间:pg_default和pg_global。
默认表空间pg_default:用来存储非共享系统表、用户表、用户表index、临时表、临时表index、内部临时表的默认表空间。对应存储目录为实例数据目录下的base目录。
共享表空间pg_global:用来存放共享系统表的表空间。对应存储目录为实例数据目录下的global目录。

创建表空间的语法格式

CREATE TABLESPACE tablespace_name
    [ OWNER user_name ] [RELATIVE] LOCATION 'directory' [ MAXSIZE 'space_size' ]
    [with_option_clause];

参数说明

tablespace_name:要创建的表空间名称。
OWNER user_name:指定该表空间的所有者。缺省时,新表空间的所有者是当前用户。
RELATIVE:使用相对路径,LOCATION目录是相对于各个数据库节点数据目录下的。
LOCATION directory:用于表空间的目录,
MAXSIZE ‘space_size’:指定表空间在单个数据库节点上的最大值。
random_page_cost:指定随机读取page的开销。默认值:使用GUC参数random_page_cost的值。
seq_page_cost:指定顺序读取page的开销。默认值:使用GUC参数seq_page_cost的值。

----创建表空间

create tablespace ds_location1 relative location 'tablespace/tablespace_1';

----创建用户lvzz并指定为新建表空间的所有者

create role lvzz identified by 'lvzz@123456'; create tablespace ds_location2 owner lvzz relative location 'tablespace/tablespace_2';

Image.png

更改表空间的语法格式

--重命名表空间的语法
ALTER TABLESPACE tablespace_name RENAME TO new_tablespace_name;

--设置表空间所有者的语法
ALTER TABLESPACE tablespace_name OWNER TO new_owner;

--设置表空间属性的语法
ALTER TABLESPACE tablespace_name SET ( {tablespace_option = value} [, ... ] );

--重置表空间属性的语法
ALTER TABLESPACE tablespace_name RESET ( { tablespace_option } [, ...] );

--设置表空间限额的语法
ALTER TABLESPACE tablespace_name RESIZE MAXSIZE { UNLIMITED | 'space_size'};

----创建用户lvzz2,并更改ds_location1的所有者为lvzz2

create role lvzz2 identified by 'lvzz#123456'; alter tablespace ds_location1 owner to lvzz2;

----把表空间ds_location1重命名为ds_location3

alter tablespace ds_location1 rename to ds_location3;

Image.png

删除表空间的语法格式

DROP TABLESPACE [ IF EXISTS ] tablespace_name;

----删除表空间

drop tablespace if exists ds_location2; drop tablespace if exists ds_location3; \db

Image.png

课后作业

1、创建表空间,表空间tspc1使用相对路径指定所在目录,表空间tspc2指定owner为Lucy

create role lucy password 'lucy@123456'; create tablespace tspc1 relative location 'tablespace/tspc1'; create tablespace tspc2 owner lucy relative location 'tablespace/tspc2'; \db

Image.png

2、在表空间tspc1中建表,并使用视图pg_tables查看信息

create table lvzz(id int, name varchar(20)) tablespace tspc1; select schemaname,tablename,tableowner,tablespace,created,last_ddl_time from pg_tables where tablename='lvzz';

Image.png

3、重命名tspc1,修改tspc2的用户为Lily,使用\db查看表空间信息

create role lily password 'lily@123456'; alter tablespace tspc1 rename to tspc11; alter tablespace tspc2 owner to lily; \db

Image.png

4、删除表空间

drop table lvzz; drop tablespace if exists tspc11; drop tablespace if exists tspc2; \db

Image.png

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论