跳转至

CREATE TABLESPACE

CREATE TABLESPACE

定义一个新的表空间。

语法
sql CREATE TABLESPACE tablespace_name [OWNER username] LOCATION '/path/to/dir' [WITH (contentID_1='/path/to/dir1'[, contentID_2='/path/to/dir2' ... ])]
描述

CREATE TABLESPACE为SeaboxMPP数据库系统注册并配置新的表空间。 表空间名称必须不同于系统中任何现有表空间的名称。表空间是SeaboxMPP数据库系统对象(全局对象),如果您具有适当的权限,则可以使用任何数据库中的表空间。

表空间允许超级用户定义包含数据库对象(例如表和索引)的数据文件所在的备用主机文件系统位置。

具有适当权限的用户可以将表空间名称传递给CREATE DATABASECREATE DATABASECREATE INDEX,以将这些对象的数据文件存储在指定的表空间中。

在SeaboxMPP数据库中,文件系统位置必须存在于所有主机上,包括运行coordinator,每个primary和每个mirror的主机。

参数

该SQL命令参数说明见下

tablespacename
要创建的表空间的名称。 该名称不能以pg_sc_开头,因为此类名称是为系统表空间保留的。
OWNER username
拥有表空间的用户名。 如果省略,则默认为执行命令的用户。 只有超级用户可以创建表空间,但是他们可以将表空间的所有权分配给非超级用户。
LOCATION '/path/to/dir'

目录的绝对路径(主机系统文件位置),它将是表空间的根目录。注册表空间时,该目录应该为空,并且必须归SeaboxMPP数据库系统用户所有。该目录必须由绝对路径名指定。

对于每个executor实例,您可以在WITH子句中为表空间指定不同的目录。

contentID_i='/path/to/dir_i'

ID_i是executor实例的content ID。/path/to/dir_i是executor实例用作表空间的根目录的主机系统文件位置的绝对路径。不能指定coordinator实例的content ID(-1)。 您可以为多个executor指定相同的目录。

如果WITH子句中未列出executor实例, 则SeaboxMPP数据库将使用LOCATION子句指定的目录。注册表空间时,目录应为空,并且必须由SeaboxMPP数据库系统用户拥有。

注解

表空间仅在支持符号链接的系统上受支持。

CREATE TABLESPACE不能在事务块内执行。

创建表空间时,请确保文件系统位置具有足够的I/O速度和可用磁盘空间。

CREATE TABLESPACE创建从coordinator和executor实例数据目录中的sd_tblspc目录到命令中指定目录的符号链接。

系统catalog表pg_tablespace存储表空间信息。 此命令显示表空间的OID值,名称和所有者。

SELECT oid, spcname, spcowner FROM pg_tablespace ;

SeaboxMPP数据库内置函数sc_tablespace_location(tablespace_oid)显示所有executor实例的表空间主机系统文件位置。此命令列出OID为16385的表空间的executor数据库ID和主机系统文件位置。

SELECT * FROM sc_tablespace_location(16385) ;
示例

创建一个新表空间,并为coordinator和所有executor实例指定文件系统位置:

CREATE TABLESPACE mytblspace LOCATION '/scdbtspc/mytestspace' ;

创建一个新表空间,并为content ID为0和1的executor实例指定一个位置。对于未在WITH子句中列出的coordinator和executor实例,在LOCATION子句中指定该表空间的文件系统位置。

CREATE TABLESPACE mytblspace LOCATION '/scdbtspc/mytestspace' WITH (content0='/temp/mytest', content1='/temp/mytest');

该示例为两个executor实例指定了相同的位置。 您可以为每个executor指定不同的位置。

兼容性说明
CREATE TABLESPACE是SeaboxMPP数据库扩展。
相关SQL命令
CREATE DATABASE, CREATE TABLE, CREATE INDEX, DROP TABLESPACE,ALTER TABLESPACE