CREATE TABLESPACE 是一个用于定义 表空间 的 DDL 命令。
CREATE TABLESPACE 被添加于 PostgreSQL 8.0。
变更历史
- PostgreSQL 14
- 添加了
CREATE TABLESPACE ... OWNER CURRENT_ROLE选项 (提交 45b98057)
- 添加了
- PostgreSQL 9.5
- 添加了
CREATE TABLESPACE ... OWNER { CURRENT_USER | SESSION_USER }选项 (提交 31eae602)
- 添加了
- PostgreSQL 9.4
- 添加了
CREATE TABLESPACE ... WITH ( options )语法 (提交 5254958e)
- 添加了
- PostgreSQL 8.0
- 添加 (提交 2467394e)
示例
表空间目录必须存在
postgres=# CREATE TABLESPACE foo LOCATION '/tmp/tblspc_test'; ERROR: directory "/tmp/tblspc_test" does not exist
并且由运行 PostgreSQL 的系统用户拥有
postgres=# CREATE TABLESPACE foo LOCATION '/tmp/tblspc_test'; ERROR: could not set permissions on directory "/tmp/tblspc_test": Operation not permitted
成功创建后
postgres=# CREATE TABLESPACE foo LOCATION '/tmp/tblspc_test'; CREATE TABLESPACE
会在 pg_tblspc 目录中创建一个符号链接,指向指定的 表空间目录
$ ls -l /var/lib/pgsql/data/pg_tblspc/ total 0 lrwxrwxrwx 1 postgres postgres 16 Nov 6 13:40 16495 -> /tmp/tblspc_test
尝试在现有表空间目录中创建表空间
postgres=# CREATE TABLESPACE foo1 LOCATION '/tmp/tblspc_test'; ERROR: directory "/tmp/tblspc_test/PG_14_202010291" already in use as a tablespace
参考资料
- PostgreSQL 文档: CREATE TABLESPACE
