PostgreSQL 9.4.4 中文手册
上一页 | 上一级 |  | 下一页

# CREATE TABLESPACE

## 名称

CREATE TABLESPACE -- 定义一个新的表空间

## 大纲

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

## 描述

`CREATE TABLESPACE`注册一个集群范围内的新表空间。 表空间的名字必须在该数据库集群中的任何现有表空间中唯一。

表空间允许超级用户在文件系统中定义一个可选的位置， 这个位置可以存放代表数据库对象的数据文件(比如表和索引)。

一个用户，如果有合适的权限，就可以把`CREATE DATABASE`, `CREATE TABLE`, `CREATE INDEX`, `ADD CONSTRAINT` 之一传递给`tablespace_name`， 这样就让这些对象的数据文件存储在指定的表空间里。

警告
一个表空间不能独立于定义它的集群使用；参阅第 21.6 节。

## 参数

`tablespace_name`

  要创建的表空间的名字。这个名字不能以`pg_`开头， 因为这些名字是保留给系统表空间使用的。

`user_name`

  将拥有这个表空间的用户名。如果省略，缺省为执行此命令的用户名。 只有超级用户可以创建表空间，但是他们可以把表空间的所有者授予非超级用户。

`directory`

  用于表空间的目录。目录必须是空的，并且由运行PostgreSQL 系统用户所有。目录必须用一个绝对路径声明。

`tablespace_option`

  一个要设置或者重设的表空间参数。当前，唯一可用的参数是 `seq_page_cost`和`random_page_cost`。 为一个特定的表空间设定其中的一个值， 覆盖规划器读取该表空间中表页面的通常估计成本， 就像通过相同名字的配置参数（参阅seq_page_cost、 random_page_cost）确定的一样。 如果一个表空间位于磁盘上，比其他I/O子系统更快或者更慢时，这个可能是有用的。

## 注意

只有在那些支持符号连接的系统上才支持表空间。

`CREATE TABLESPACE`不允许在一个事务块内部执行。

## 例子

在`/data/dbs`创建一个表空间`dbspace`：

    CREATE TABLESPACE dbspace LOCATION '/data/dbs';

在`/data/indexes`创建一个表空间`indexspace` 并由用户`genevieve`所有：

    CREATE TABLESPACE indexspace OWNER genevieve LOCATION '/data/indexes';

## 兼容性

`CREATE TABLESPACE`是PostgreSQL扩展。

## 又见

CREATE DATABASE, CREATE TABLE, CREATE INDEX, DROP TABLESPACE, ALTER TABLESPACE

上一页 | 起始页 | 下一页
CREATE TABLE AS | 上一级 | CREATE TEXT SEARCH CONFIGURATION