表空间
表空间对应于一个文件系统目录。
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';

更改表空间的语法格式
--重命名表空间的语法
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;

删除表空间的语法格式
DROP TABLESPACE [ IF EXISTS ] tablespace_name;
----删除表空间
drop tablespace if exists ds_location2;
drop tablespace if exists ds_location3;
\db

课后作业
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

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

3、重命名tspc1,修改tspc2的用户为Lily,使用\db查看表空间信息
create role lily password 'lily@123456';
alter tablespace tspc1 rename to tspc11;
alter tablespace tspc2 owner to lily;
\db

4、删除表空间
drop table lvzz;
drop tablespace if exists tspc11;
drop tablespace if exists tspc2;
\db

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




