Greenplum6表空间使用

2022-06-06 00:00:00 创建 指定 目录 实例 空间

Greenplum表空间是让数据库使用多个文件系统来存储数据库的对象,当创建一个表空间时,需要指定路径,这些路径会通过软链接的方式关联到实例工作目录的pg_tblspc
目录下,并以tablespace_id
为名称,目录结构是GPDB_大版本号_系统表版本号(GPDB_6_301908232)。

表空间必须由超级用户才可以创建,使用语法如下:

CREATE TABLESPACE tablespace_name
    [ OWNER user_name ]
    LOCATION 'directory'
    [ WITH ( tablespace_option = value [, ... ] ) ]

参数说明

  • tablespace name

    要创建的表空间的名称。名称不能以 pg_ 或者 gp_,因为这些名称是为系统表空间保留的。

  • OWNER username

    拥有表空间的用户名。如果省略,则默认为执行命令的用户。只有超级用户可以创建表空间,但是他们可以将表空间的所有权分配给非超级用户。

  • LOCATION '/path/to/dir'

    目录的路径(主机系统文件位置),它将是表空间的根目录。注册表格时,该目录应该为空,并且必须归Greenplum数据库系统用户所有。该目录必须由不超过100个字符的路径名指定。

  • contentID_i='/path/to/dir_i'

    ID_i
    是细分实例的内容ID。/ path to dir_i
    是段实例用作表空间的根目录的主机系统文件位置的路径。不能指定主实例的内容ID(-1)。只能为多个实例段指定相同的目录。

表空间使用实例

创建表空间

在每台服务器gpadmin用户下创建目录

mkdir /data/gp6/test

创建表空间及指定目录

CREATE TABLESPACE test_space  LOCATION '/data/gp6/test'

或者以指定实例目录来创建表空间

CREATE TABLESPACE mytblspace LOCATION '/data/gp6/test_master' 
WITH (content0='/data/gp6/test_1', content1='/data/gp6/test_2');

表空间赋权

表空间创建好后,需要赋权给普通用户使用的权限

grant CREATE ON TABLESPACE test_space TO user;

创建表时指定表空间

数据库创建表时可以指定表空间

create table test2(like pg_tables)  TABLESPACE mytblspace distributed randomly;

或者可以设置表空间参数default_tablespace
来创建表

set default_tablespace= mytblspace;
create table test2(like pg_tables) distributed randomly;

修改表的表空间

test=# alter table public.test3 set tablespace mytblspace;
ALTER TABLE

获取表空间的信息

查找表空间的oid

test=# SELECT oid, spcname, spcowner FROM pg_tablespace ;
  oid  |  spcname   | spcowner
-------+------------+----------
  1663 | pg_default |       10
  1664 | pg_global  |       10
 18959 | test_space |       10

根据获取到的表空间oid查找存储的目录

test=# SELECT * FROM gp_tablespace_location(18959);
 gp_segment_id |   tblspc_loc
---------------+----------------
             1 | /data/gp6/test
             0 | /data/gp6/test
            -1 | /data/gp6/test

删除表空间

如果表空间下有存储表或其它对象,该表空间是不能够被删除的。要删除表空间,能使用例drop tablespace命令来完成
,而且只能被其owner和超级用户才能删除。下面是删除的语法:

DROP TABLESPACE test_space;


相关文章