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

openGauss每日一练第7天 | openGauss表空间

原创 。。。。 2021-12-09
655

学习心得:

表空间用于管理数据对象,与磁盘上的一个目录对应

  • 只有系统管理员可以创建表空间。
  • 不允许在一个事务块内部执行CREATE TABLESPACE。
  • 执行CREATE TABLESPACE失败,如果内部创建目录(文件)操作成功了就会产生残留的目录(文件),重新创建时需要用户手动清理表空间指定的目录下残留的内容。如果在创建过程中涉及到数据目录下的表空间软连接残留,需要先将软连接的残留文件删除,再重新执行OM相关操作。
  • CREATE TABLESPACE不支持两阶段事务,如果部分节点执行失败,不支持回滚。
  • 语法格式

    复制代码CREATE TABLESPACE tablespace_name
        [ OWNER user_name ] [RELATIVE] LOCATION 'directory' [ MAXSIZE 'space_size' ]
        [with_option_clause];
    
    复制

    其中普通表空间的with_option_clause为:

    复制代码WITH ( {filesystem= { 'general'| "general" | general} |
        random_page_cost = { 'value ' | value } |
        seq_page_cost = { 'value ' | value }}[,...])
    复制

参数说明

  • tablespace_name

    要创建的表空间名称。

    表空间名称不能和openGauss中的其他表空间重名,且名称不能以”pg”开头,这样的名称留给系统表空间使用。

    取值范围:字符串,要符合标识符的命名规范。

  • OWNER user_name

    指定该表空间的所有者。缺省时,新表空间的所有者是当前用户。

    只有系统管理员可以创建表空间,但是可以通过OWNER子句把表空间的所有权赋给其他非系统管理员。

    取值范围:字符串,已存在的用户。

  • RELATIVE

    使用相对路径,LOCATION目录是相对于各个数据库节点数据目录下的。

    目录层次:数据库节点的数据目录/pg_location/相对路径

    相对路径最多指定两层。

  • LOCATION directory

    用于表空间的目录,对于目录有如下要求:

    • openGauss系统用户必须对该目录拥有读写权限,并且目录为空。如果该目录不存在,将由系统自动创建。
    • 目录必须是绝对路径,目录中不得含有特殊字符(如$,> 等)。
    • 目录不允许指定在数据库数据目录下。
    • 目录需为本地路径。

    取值范围:字符串,有效的目录。

  • MAXSIZE 'space_size'

    指定表空间在单个数据库节点上的最大值。

    取值范围:字符串格式为正整数+单位,单位当前支持K/M/G/T/P。解析后的数值以K为单位,且范围不能够超过64比特表示的有符号整数,即1KB~9007199254740991KB。

  • random_page_cost

    指定随机读取page的开销。

    取值范围:0~1.79769e+308。

    默认值:使用GUC参数random_page_cost的值。

  • seq_page_cost

    指定顺序读取page的开销。

    取值范围:0~1.79769e+308。

    默认值:使用GUC参数seq_page_cost的值。

课程作业:

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

回答:

CREATE TABLESPACE tspc1 RELATIVE LOCATION 'tablespace/tspc1_1';

CREATE ROLE Lucy IDENTIFIED BY 'Lucy@123';

CREATE TABLESPACE tspc2 OWNER Lucy RELATIVE LOCATION 'tablespace/tspc2_1';

截图:



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

回答:

create table tspc1_table(id int, name char(30)) tablespace tspc1;

select * from pg_tables where tablename = 'tspc1_table';

截图:


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

回答:

alter tablespace tspc1 rename to tspc10;create user Lily password 'Lily@123';alter tablespace tspc2 owner to Lily;

截图:


4.删除表空间

回答:

drop table tspc1_table;

drop tablespace if exists tspc10;

drop tablespace if exists tspc2;

截图:







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

评论