CREATE TABLESPACE
定义一个新的表空间。
概要
CREATE TABLESPACE tablespace_name [OWNER username] LOCATION '/path/to/dir'
[WITH (contentID_1='/path/to/dir1'[, contentID_2='/path/to/dir2' ... ])]
描述
CREATE TABLESPACE
为Greenplum数据库系统注册并配置新的表空间。
表空间名称必须不同于系统中任何现有表空间的名称。
表空间是Greenplum数据库系统对象(全局对象),如果您具有适当的特权,则可以使用任何数据库中的表空间。
表空间允许超级用户定义包含数据库对象(例如表和索引)的数据文件所在的备用主机文件系统位置。
具有适当特权的用户可以将表空间名称传递给[CREATE DATABASE](CREATE_DATABASE.html#topic1)
,
[CREATE DATABASE](CREATE_DATABASE.html#topic1)
或[CREATE INDEX](CREATE_INDEX.html#topic1)
,
以将这些对象的数据文件存储在指定的表空间中。
在Greenplum数据库中,文件系统位置必须存在于所有主机上, 包括运行master,standby,每个primary和每个mirror的主机。
参数
tablespacename
要创建的表空间的名称。
该名称不能以pg_
或gp_
开头,因为此类名称是为系统表空间保留的。
OWNER username
拥有表空间的用户名。 如果省略,则默认为执行命令的用户。 只有超级用户可以创建表空间,但是他们可以将表空间的所有权分配给非超级用户。
LOCATION '/path/to/dir' 目录的绝对路径(主机系统文件位置),它将是表空间的根目录。 注册表空间时,该目录应该为空,并且必须归Greenplum数据库系统用户所有。 该目录必须由绝对路径名指定。
对于每个segment实例,您可以在WITH
子句中为表空间指定不同的目录。
contentID_i='/path/to/dir_i'
值ID_i是segment实例的content ID。
/path/to/dir_i是segment实例用作表空间的根目录的主机系统文件位置的绝对路径。
您不能指定master实例的content ID(-1
)。
您可以为多个segment指定相同的目录。
如果WITH
子句中未列出segment实例,
则Greenplum数据库将使用LOCATION
子句指定的目录。
注册表空间时,目录应为空,并且必须由Greenplum数据库系统用户拥有。
注解
表空间仅在支持符号链接的系统上受支持。
CREATE TABLESPACE
不能在事务块内执行。
创建表空间时,请确保文件系统位置具有足够的I/O速度和可用磁盘空间。
CREATE TABLESPACE
创建从master和segment实例数据目录中的pg_tblspc
目录到命令中指定目录的符号链接。
系统catalog表pg_tablespace
存储表空间信息。
此命令显示表空间的OID值,名称和所有者。
SELECT oid, spcname, spcowner FROM pg_tablespace ;
Greenplum数据库内置函数gp_tablespace_location(tablespace_oid)
显示所有segment实例的表空间主机系统文件位置。
此命令列出OID为16385
的表空间的segment数据库ID和主机系统文件位置。
SELECT * FROM gp_tablespace_location(16385)
示例
创建一个新表空间,并为master和所有segment实例指定文件系统位置:
CREATE TABLESPACE mytblspace LOCATION '/gpdbtspc/mytestspace' ;
创建一个新表空间,并为content ID为0和1的segment实例指定一个位置。
对于未在WITH
子句中列出的master和segment实例,
在LOCATION
子句中指定该表空间的文件系统位置。
CREATE TABLESPACE mytblspace LOCATION '/gpdbtspc/mytestspace' WITH (content0='/temp/mytest', content1='/temp/mytest');
该示例为两个segment实例指定了相同的位置。 您可以为每个segment指定不同的位置。
兼容性
CREATE TABLESPACE
是Greenplum数据库扩展。
另见
[CREATE DATABASE](CREATE_DATABASE.html#topic1)
,
[CREATE TABLE](CREATE_TABLE.html#topic1)
,
[CREATE INDEX](CREATE_INDEX.html#topic1)
,
[DROP TABLESPACE](DROP_TABLESPACE.html#topic1)
,
[ALTER TABLESPACE](ALTER_TABLESPACE.html#topic1)
Parent topic: SQL Command Reference